Skip navigation.
 
mlRe: Thread safe?
FROM : Trygve Inda
DATE : Sun Mar 30 17:34:19 2008

>
> On 29.03.2008, at 18:54, Adam R. Maxwell wrote:

>>
>> Drawing into an NSImage is explicitly documented to be thread safe
>> in the article you linked to, and each thread has its own graphics
>> context.  The post I linked to does indicate that you might want to
>> use [image setCacheMode:NSImageCacheNever].  If your goal is just to
>> get an NSBitmapImageRep from a file, it's probably easier just to
>> use +imageRepWithContentsOfFile:.

>
> While it is documented to be thread save you might get crashes later
> when an NSBitmapImageRep created by drawing into from an secondary
> thread gets drawn itself. The crash occurs when the image tries to
> access an NULL (offscreen) window context (it probably was originally
> drawn into).
>
> Tried to debug that on 10.5.2 (and simply worked around)...


This will never be drawn to the screen, but will be saved to disk:

NSDictionary*    imageProps = [NSDictionary dictionaryWithObject:[NSNumber
numberWithFloat:0.9] forKey:NSImageCompressionFactor];

NSData*            imageData = [myImageRep
representationUsingType:NSJPEGFileType properties:imageProps];

[imageData writeToFile:path atomically:NO];

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.

Trygve

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