• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
bitmap caching issue (was: settings to build for 10.5 on 10.6?)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bitmap caching issue (was: settings to build for 10.5 on 10.6?)


  • Subject: bitmap caching issue (was: settings to build for 10.5 on 10.6?)
  • From: Matt Neuburg <email@hidden>
  • Date: Sun, 20 Sep 2009 12:58:10 -0700
  • Thread-topic: bitmap caching issue (was: settings to build for 10.5 on 10.6?)

Okey-dokey, I'm back with more information. I have finally tracked down the
source of my Core Animation crash on 10.5 (the problem, you may recall, is
that it's crashing on 10.5 but working just fine on 10.6). And it has
nothing to do with my build settings after all.

Here's the story. My animation is a transition based around setting a
layer's contents. The crash, it turns out, has to do with how I'm acquiring
the CGImages used to set the layer's contents. I'm acquiring them from a
"screen shot" of a window (see my thread "adding a page curl transition").
Like this (v is a window's content view, fglayer is the CALayer that does
the animation):

NSBitmapImageRep* b = [v bitmapImageRepForCachingDisplayInRect: [v
visibleRect]];
[v cacheDisplayInRect:[v visibleRect] toBitmapImageRep:b];
fglayer.contents = (id)[b CGImage];

If I set the contents of the layer that way on 10.6, everything is fine. If
I do it on 10.5, I crash during the resulting animation. I am guessing that
the reason has something to do with image / bitmap caching. On 10.5, the
CGImage isn't really there, I'm guessing; it's as if the bitmap and the
CGImage are places to draw to but they don't really have any separate
existence. On 10.6, where the nature of window drawing has changed somehow,
they do exist, and everything works.

I can solve the problem - prevent the crash - on 10.5 by copying the bitmap
off to a TIFFRepresentation and turning *that* into a CGImage. So from that
point of view the problem is solved! But is there a better way? Is there
some simpler (or "correct") way to make my CGImage real - to say "Draw here,
draw now?" (I tried things like retaining or copying the CGImage and that
didn't work.) m.

>>On Sep 16, 2009, at 1:03 PM, Matt Neuburg wrote:
>>
>>> I've already set the SDK and Base to 10.5, and my app does launch
>>> successfully (if I set it to 32 bit) on my Leopard MacBook, and all
>>> of *my*
>>> code runs okay (I'm not making any 10.6-only calls AFAIK), but as
>>> soon as my
>>> app tries to perform an animation (CoreAnimation), it crashes
>>> (here's a
>>> snippet from the crash log):
>>>
>>> Code Type:       X86 (Native)
>>> ...
>>> Thread 0 Crashed:
>>> 0   com.apple.CoreGraphics            0x9295ccf0
>>> sseCGSConvertXXXX8888TransposePermute + 368
>>> 1   com.apple.CoreGraphics            0x928d9526 argb32_image + 886
>>> 2   libRIP.A.dylib                    0x96031372 ripl_Mark + 38
>>> 3   libRIP.A.dylib                    0x96033977 ripl_BltImage + 1307
>>> 4   libRIP.A.dylib                    0x9601d549 ripc_RenderImage +
>>> 273
>>> 5   libRIP.A.dylib                    0x9602de6a ripc_DrawImage + 5102
>>> 6   com.apple.CoreGraphics            0x928cd17d CGContextDrawImage
>>> + 397
>>> 7   com.apple.QuartzCore              0x9425c85f
>>> create_image_by_rendering +
>>> 469
>>> 8   com.apple.QuartzCore              0x9425c358
>>> CARenderImageNewWithCGImage
>>> + 928
>>> 9   com.apple.QuartzCore              0x942842e0
>>> CARenderPrepareCGImage + 25
>>> 10  com.apple.QuartzCore              0x942842b5
>>> CALayerPrepareCommit + 242
>>> 11  com.apple.QuartzCore              0x94258543
>>> CAContextCommitTransaction
>>> + 187
>>> 12  com.apple.QuartzCore              0x94258239 CATransactionCommit
>>> + 229
>>> ...

--
matt neuburg, phd = email@hidden, <http://www.tidbits.com/matt/>
A fool + a tool + an autorelease pool = cool!
AppleScript: the Definitive Guide - Second Edition!
http://www.tidbits.com/matt/default.html#applescriptthings



_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: bitmap caching issue (was: settings to build for 10.5 on 10.6?)
      • From: Ken Ferry <email@hidden>
  • Prev by Date: Re: MutableDictionary setValue:forKeyPath - strange behavior
  • Next by Date: Re: bitmap caching issue (was: settings to build for 10.5 on 10.6?)
  • Previous by thread: Re: favicon of address
  • Next by thread: Re: bitmap caching issue (was: settings to build for 10.5 on 10.6?)
  • Index(es):
    • Date
    • Thread