[vlc-commits] vout iOS: fix context initialization if someone else already created a context

Felix Paul Kühne git at videolan.org
Sat Oct 14 18:52:10 CEST 2017


vlc | branch: master | Felix Paul Kühne <felix at serioese.gmbh> | Fri Oct 13 16:36:58 2017 +0200| [e713ded8cb5f3581eb119dfabbfb15d804557897] | committer: Felix Paul Kühne

vout iOS: fix context initialization if someone else already created a context

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e713ded8cb5f3581eb119dfabbfb15d804557897
---

 modules/video_output/ios.m | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
index deeb2640eb..7a5e0615e8 100644
--- a/modules/video_output/ios.m
+++ b/modules/video_output/ios.m
@@ -448,6 +448,12 @@ static void OpenglESSwap(vlc_gl_t *gl)
     if (unlikely(!_appActive))
         return nil;
 
+    /* the following creates a new OpenGL ES context with the API version we
+     * need if there is already an active context created by another OpenGL
+     * provider we cache it and restore analog to the lock/unlock pattern used
+     * through-out the class */
+    _previousEaglContext = [EAGLContext currentContext];
+
     _eaglContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
 
     if (unlikely(!_eaglContext))
@@ -461,6 +467,8 @@ static void OpenglESSwap(vlc_gl_t *gl)
 
     self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
 
+    [self unlock];
+
     return self;
 }
 
@@ -640,8 +648,7 @@ static void OpenglESSwap(vlc_gl_t *gl)
         return;
     }
 
-    EAGLContext *previousContext = [EAGLContext currentContext];
-    [EAGLContext setCurrentContext:_eaglContext];
+    [self lock];
 
     CGSize viewSize = [self bounds].size;
     CGFloat scaleFactor = self.contentScaleFactor;
@@ -661,7 +668,7 @@ static void OpenglESSwap(vlc_gl_t *gl)
 
     // x / y are top left corner, but we need the lower left one
     glViewport(place.x, place.y, place.width, place.height);
-    [EAGLContext setCurrentContext:previousContext];
+    [self unlock];
 }
 
 - (void)tapRecognized:(UITapGestureRecognizer *)tapRecognizer



More information about the vlc-commits mailing list