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]