From 0484b127c762d7519726db78e2017cb762a20c1a Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Mon, 3 May 2010 12:46:15 +0200 Subject: [PATCH] macosx_vout: Correctly change context after -lockgl. And don't unlockgl if lockgl wasn't successful. --- modules/video_output/macosx.m | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/modules/video_output/macosx.m b/modules/video_output/macosx.m index ff965fd3b5..3394a77ede 100644 --- a/modules/video_output/macosx.m +++ b/modules/video_output/macosx.m @@ -419,7 +419,10 @@ static void OpenglSwap(vout_opengl_t *gl) - (BOOL)lockgl { VLCAssertMainThread(); - CGLError err = CGLLockContext([[self openGLContext] CGLContextObj]); + NSOpenGLContext *context = [self openGLContext]; + CGLError err = CGLLockContext([context CGLContextObj]); + if (err == kCGLNoError) + [context makeCurrentContext]; return err == kCGLNoError; } @@ -493,21 +496,21 @@ static void OpenglSwap(vout_opengl_t *gl) } } - [self lockgl]; + if ([self lockgl]) { + glViewport((width - x) / 2, (height - y) / 2, x, y); - glViewport((width - x) / 2, (height - y) / 2, x, y); - - @synchronized(self) { - // This may be cleared before -drawRect is being called, - // in this case we'll skip the rendering. - // This will save us for rendering two frames (or more) for nothing - // (one by the vout, one (or more) by drawRect) - _hasPendingReshape = YES; - } + @synchronized(self) { + // This may be cleared before -drawRect is being called, + // in this case we'll skip the rendering. + // This will save us for rendering two frames (or more) for nothing + // (one by the vout, one (or more) by drawRect) + _hasPendingReshape = YES; + } - [self unlockgl]; + [self unlockgl]; - [super reshape]; + [super reshape]; + } } /** -- 2.39.2