On Jul 27, 2008, at 12:57 PM, [EMAIL PROTECTED] wrote:


-------------- Original message ----------------------
From: glenn andreas <[EMAIL PROTECTED]>

You're setting a graphics context:
        // uncommenting the next line works fine for all ads except the
last which
        // causes a crash after the last ad image is placed.
        //[NSGraphicsContext setCurrentContext: nsContext];

But you're never restoring the original context, and as a result, the
context is autoreleased later (and is still the current context).
saveGraphicsState and restoreGraphicsState only saves and restores the
state of the current context - it doesn't save/restore the current
context...

If you look a couple of lines down from that one, you'll see

[nsContext restoreGraphicsState];

It doesn't seem to make any difference when I uncomment that line as the gdb backtrace of the crash is exactly the same.

Is that "restoreGraphicsState " what you mean?

restoreGraphicsState restores the state of the current context - it does not restore the context to the previous context. You need to explicitly save the current context before you do setCurrentContext:

NSGraphicsContext *oldContext = [NSGraphicsContext currentContext];
[NSGraphicsContext setCurrentContext: nsContext];
... do drawing in the nsContext (save/restoreGraphics state impacts internal variables of nsContext)
[NSGraphicsContext setCurrentContext: oldContext];


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to