Thanks a lot. It was the retain count issue. Turns out I also had a rogue variable that was holding on to the renderer. Strange though that quicktime didn't release its resources when that variable was overridden. Seems to be stable now plus it also properly gets the stopExecution methods when it was released.
Thanks -Josh On Mar 1, 2010, at 11:42 AM, vade wrote: > Indeed, the current beta and release has some subtle and not so subtle issues > threading issues. Hopefully these can get addressed. Apologies if they caused > any issues. > > Just quickly, indeed the NSArray increments the retain count (ie it owns) > whatever you put in it. However, compositions don't render, the QCRenderer > does (its inclear by your language in the initial email), so having > compositions sitting there doing nothing should not be a problem to my > knowledge. They are 'inactive' representations of the render/object graph > that QC will use, and nothing more. Correct me if I am wrong about that. > > There should be no problem to my knowledge of having an array of > QCCompositions 'ready to go' to be used for initting a QCRenderer. The > QCComposition your renderer is based on should not need to be "cleaned up". > Are you also putting your QCRenderers into an array? If so, they are still > retained, using VRam and resources even if you are not actively calling > executeAtTime. > > Just FYI, the v002 movie player works asyncronously, and playback is not > linked to the time parameter of the QCRenderer. I can envision an scenario > here where the QCRenderer that contains the movie no longer has executeAtTime > called, is still around, and thus, if the movies rate is not set to 0, the > QTMovie object associated with the plugin in the comp you are loading is > still 'playing' in the background (assuming the QCRenderer is not properly > de-alloc'ed). > > Can you verify that you are indeed properly releasing your QCRenderers and > that their retain count goes to 0? I had some issues with this personally in > other projects, until I noticed I was leaking renderers unintentionally (an > extra retain was causing the renderer to keep textures and resources around, > eventually exhausting resources - not fun). > > > On Mar 1, 2010, at 11:29 AM, Tamas Nagy wrote: > >> As far i know, the v002 movie player doesn't work properly on a background >> thread, maybe this is the issue. Did you tried with the built-in movie >> player patch? >> >> >> On Mar 1, 2010, at 5:10 PM, Joshua Strickon wrote: >> >>> Autoreleased or not, it seems that the composition movie rendering is not >>> stopping. This could be some quicktime blunder. I did some more digging >>> and it looks like QCView has all the functions for starting, stopping and >>> unloading compositions. I get all the messages properly in Quartz >>> Composer. I abandoned using qcview because it renders on the main thread >>> which had undesirable results. I wonder if there are hidden private apis >>> that could deal with unloading, stopping and cleanup. >>> >>> >>> On Mar 1, 2010, at 9:14 AM, Tamas Nagy wrote: >>> >>>> Hi, >>>> >>>> as i remember, the QCComposition object is autoreleased, for be sure, >>>> check the QCComposition's documentation. It's not the answer for your >>>> question i know, but FYI :) >>>> >>>> >>>> >>>> 2010/3/1 Joshua Strickon <[email protected]> >>>> I have an nsview for which I programmatically swap out quartz >>>> compositions. I do this by recreating a new QCRenderer. I have using the >>>> V002 movie player plugin as I had terrible results with the current Apple >>>> quartz movie player patch, it could be related to this problem. After a >>>> bunch of switches, I have noticed that the thread count going up in sync, >>>> to the point of instability. Upon further investigation it appears that >>>> the plugin disableExecution or stopExecution functions are not getting >>>> called. When should these get called? Shouldn't these get called when I >>>> recreated the QCRenderer with a new composition? >>>> >>>> I currently have an array of compositions that I keep from querying the >>>> repository. I then reference the array by a number that is passed to the >>>> code that swaps the compositions. I simply create the new renderer and >>>> pass in the composition and the relative view pieces. Seems like the >>>> composition is not getting cleaned up when it is no longer being rendered. >>>> Is it possible because my array is retaining the composition? How do I >>>> tell the composition to that is is no longer being used? >>>> >>>> Any ideas? >>>> >>>> Here are the swap functions. >>>> >>>> >>>> Thanks >>>> >>>> Josh >>>> [_renderer release]; >>>> _renderer = [[QCRenderer alloc] >>>> initWithCGLContext:(CGLContextObj)[[qcView openGLContext] CGLContextObj] >>>> >>>> pixelFormat:(CGLPixelFormatObj)[[qcView pixelFormat] CGLPixelFormatObj] >>>> >>>> colorSpace:CGDisplayCopyColorSpace(kCGDirectMainDisplay) >>>> >>>> composition:[compositions objectAtIndex:comp]]; >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Quartzcomposer-dev mailing list ([email protected]) >>>> Help/Unsubscribe/Update your Subscription: >>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/tamas.lov.nagy%40gmail.com >>>> >>>> This email sent to [email protected] >>>> >>> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Quartzcomposer-dev mailing list ([email protected]) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/quartzcomposer-dev/doktorp%40mac.com >> >> This email sent to [email protected] >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to [email protected]

