Hmm, checking I see I have plugins installed at /Library/Graphics/Quartz
Composer Plug-Ins, and some Kineme plugins at /Library/Graphics/Quartz Composer
Patches, which is where I understood those need to be. Does that seem right?
They all work within the QC application.
The only plug-in I see at /System/Library/Graphics/Quartz Composer Plug-Ins is
WOTD.plugin.
On Jan 13, 2012, at 7:33 AM, George Toledo wrote:
> I don't think it has anything to do with your windowing error, but your
> plugins may not be correctly installed, and it might be worth examining.
>
> By default, "Backdrops.plugin" is a private API GFPlugin that Apple places in
> System/Library/Graphics/Quartz Composer Patches, and is loaded by Photo Booth
> (and maybe some other Apple apps?)
>
>
> On Jan 13, 2012, at 10:11 AM, Detour wrote:
>
>> Thoughts?? TIA.
>>
>> I've upgraded my machine to Lion a while ago and finally got around to
>> running some of my Xcode work, and ran across this issue trying to bring a
>> simple movie layer composition up full screen on a second monitor. I lock in
>> the monitor to black but no video shows.
>>
>> In the console: 2012-01-12 21:10:49.804 My App Name[84773:407] invalid
>> fullscreen drawable
>>
>> Plus a bunch of warning about plugins I am not using, but not important
>> right away?
>>
>> I had a warning with the NSOpenGLContext regarding setValues using the old
>> kCGLCPSwapInterval parameter, so I swappers that over to
>> NSOpenGLCPSwapInterval which removed the warning, but still I get a black
>> screen. The composition plays fine in QC, it is just a standard movie player
>> with billboard.
>>
>> At the tail end of the log I see this:
>>
>> 2012-01-12 21:10:50.216 The Media Device[84773:407] *** QCPlugIn: Bundle at
>> path "/Library/Graphics/Quartz Composer Plug-Ins/Backdrops.plugin" is not a
>> valid Quartz Composer plug-in
>>
>> Here's the code for setting up the QCRenderer:
>>
>>
>>
>> -(void)setupRenderer:(int)screenNumber {
>> CGDisplayErr err;
>> CGDirectDisplayID dspys [[[NSScreen screens] count]];
>> CGDisplayCount dspyCnt;
>>
>> //Load composition file path
>> NSString *path = [[NSString alloc] initWithString:[[NSBundle
>> mainBundle] pathForResource:@"Test Video Player.qtz" ofType:nil]];
>> [path retain];
>>
>> err = CGGetOnlineDisplayList ([[NSScreen screens] count], dspys,
>> &dspyCnt); if (err != CGDisplayNoErr) {
>> NSLog(@"Cannot get display list");
>> [NSApp terminate:nil];
>> }
>>
>> CGDisplayCapture(dspys[screenNumber]);
>> _screenSize.width = CGDisplayPixelsWide(dspys[screenNumber]);
>> _screenSize.height = CGDisplayPixelsHigh(dspys[screenNumber]);
>>
>> GLint value = 1;
>> NSOpenGLPixelFormatAttribute attributes[] = {
>> NSOpenGLPFAFullScreen,
>> NSOpenGLPFAScreenMask,
>> CGDisplayIDToOpenGLDisplayMask(dspys[screenNumber]),
>> NSOpenGLPFANoRecovery,
>> NSOpenGLPFADoubleBuffer,
>> NSOpenGLPFAAccelerated,
>> NSOpenGLPFADepthSize, 24,
>> (NSOpenGLPixelFormatAttribute) 0
>> };
>> NSOpenGLPixelFormat* format = [[[NSOpenGLPixelFormat alloc]
>> initWithAttributes:attributes] autorelease];
>>
>>
>> //Create the fullscreen OpenGL context on the main screen
>> (double-buffered with color and depth buffers)
>> _openGLContext = [[NSOpenGLContext alloc] initWithFormat:format
>> shareContext:nil];
>> if(_openGLContext == nil) {
>> NSLog(@"Cannot create OpenGL context");
>> [NSApp terminate:nil];
>> }
>> [_openGLContext setFullScreen];
>> [_openGLContext setValues:&value forParameter:NSOpenGLCPSwapInterval];
>>
>> //Create the QuartzComposer Renderer with that OpenGL context and the
>> specified composition file
>> _renderer = [[QCRenderer alloc] initWithOpenGLContext:_openGLContext
>> pixelFormat:format file:path];
>> if(_renderer == nil) {
>> NSLog(@"Cannot create QCRenderer");
>> [NSApp terminate:nil];
>> }
>>
>> //Create a timer which will regularly call our rendering method
>> _renderTimer = [[NSTimer scheduledTimerWithTimeInterval:(1.0 /
>> (NSTimeInterval)kRendererFPS) target:self selector:@selector(_render:)
>> userInfo:nil repeats:YES] retain];
>>
>>
>> }
>>
>> - (void) renderWithEvent:(NSEvent*)event
>> {
>> NSTimeInterval time = [NSDate
>> timeIntervalSinceReferenceDate];
>> NSPoint mouseLocation;
>> NSMutableDictionary* arguments;
>>
>> //Let's compute our local time
>> if(_startTime == 0) {
>> _startTime = time;
>> time = 0;
>> }
>> else
>> time -= _startTime;
>>
>> //We setup the arguments to pass to the composition (normalized mouse
>> coordinates and an optional event)
>> mouseLocation = [NSEvent mouseLocation];
>> mouseLocation.x /= _screenSize.width;
>> mouseLocation.y /= _screenSize.height;
>> arguments = [NSMutableDictionary dictionaryWithObject:[NSValue
>> valueWithPoint:mouseLocation] forKey:QCRendererMouseLocationKey];
>> if(event)
>> [arguments setObject:event forKey:QCRendererEventKey];
>>
>> //Render a frame
>> if(![_renderer renderAtTime:time arguments:arguments])
>> NSLog(@"Rendering failed at time %.3fs", time);
>>
>> //Flush the OpenGL context to display the frame on screen
>> [_openGLContext flushBuffer];
>> }
>>
>> - (void) _render:(NSTimer*)timer
>> {
>> //Simply call our rendering method, passing no event to the composition
>> [self renderWithEvent:nil];
>> }
>>
>> - (void) sendEvent:(NSEvent*)event
>> {
>> //If the user pressed the [Esc] key, we need to exit
>> if(([event type] == NSKeyDown) && ([event keyCode] == 0x35))
>> [NSApp terminate:nil];
>>
>> //If the renderer is active and we have a meaningful event, render
>> immediately passing that event to the composition
>> if(_renderer && (NSEventMaskFromType([event type]) &
>> kRendererEventMask))
>> [self renderWithEvent:event];
>> //else
>> // [super sendEvent:event];
>> }
>>
>>
>> _______________________________________________
>> 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/gtoledo3%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/archive%40mail-archive.com
This email sent to [email protected]