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]

Reply via email to