Skip navigation.
 
mlRe: Thread safe?
FROM : glenn andreas
DATE : Sun Mar 30 19:14:05 2008

On Mar 30, 2008, at 12:02 PM, Jens Alfke wrote:

>
> On 30 Mar '08, at 8:34 AM, Trygve Inda wrote:
>

>> How did you work around this?
>>
>> Basically I am opening a bitmap drawing an NSImage into it, then 
>> pixel-level
>> tweaking the bitmap, and saving it to disk as a jpg.

>
> You might want to drop down a level and use CGImage for your bitmap. 
> CG is stateless (the graphics context is passed in to every drawing 
> call) and doesn't do the types of offscreen caching that NSImage 
> does, so it's more likely to be thread-safe.
>


Or drop down just a step to just use NSBitmapImageRep instead of 
NSImage which avoids all the caching issues (since you never make an 
NSImage).  It is very well suited for "pixel level work that is saved 
in a file" (since you'll need it to do NSBitmapImageRep's 
representationUsingType: properties: to get the data for a JPG or PNG 
file anyway).

The only slightly tricky part is that if you want to draw in it (using 
the standard drawing routines, as opposed to custom pixel access 
stuff), you'll need to make a context using NSGraphicContext's 
graphicsContextWithBitmapImageRep and then set that as the current 
context.

Graphics contexts are thread safe (there is one for each thread) so 
there's no problem with threading.  I've used this approach without a 
problem (and my rendering stuff is highly threaded - not just multiple 
threads rendering different things into different files, but each 
renderer can be multi-threaded as well)


Glenn Andreas                      <email_removed>
  <http://www.gandreas.com/> wicked fun!
quadrium2 | build, mutate, evolve, animate  | images, textures, 
fractals, art

Related mailsAuthorDate
mlThread safe? Trygve Inda Mar 29, 14:44
mlRe: Thread safe? Jens Alfke Mar 29, 18:05
mlRe: Thread safe? Adam R. Maxwell Mar 29, 18:54
mlRe: Thread safe? Trygve Inda Mar 29, 20:20
mlRe: Thread safe? Adam R. Maxwell Mar 29, 20:48
mlRe: Thread safe? Thomas Engelmeier Mar 30, 15:10
mlRe: Thread safe? Adam R. Maxwell Mar 30, 17:01
mlRe: Thread safe? Trygve Inda Mar 30, 17:34
mlRe: Thread safe? Jens Alfke Mar 30, 19:02
mlRe: Thread safe? glenn andreas Mar 30, 19:14
mlRe: Thread safe? Trygve Inda Mar 30, 22:21
mlRe: Thread safe? glenn andreas Mar 30, 22:35
mlRe: Thread safe? Thomas Engelmeier Mar 31, 12:30