[vlc-commits] vout: ios: voutDisplay is now constant in glESView

2018-03-07 Thread Thomas Guillem
vlc/vlc-3.0 | branch: master | Thomas Guillem  | Tue Mar  6 
09:57:30 2018 +0100| [118e27e34670f70141433eb5fc3c55cdf8f64f27] | committer: 
Thomas Guillem

vout: ios: voutDisplay is now constant in glESView

This avoids to take care about locking (that was not correct).

(cherry picked from commit 86e82a420fffc31b473ce65285dbee977db8eb9c)
Signed-off-by: Thomas Guillem 

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

 modules/video_output/ios.m | 61 ++
 1 file changed, 24 insertions(+), 37 deletions(-)

diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
index 92cf920720..8686d8b051 100644
--- a/modules/video_output/ios.m
+++ b/modules/video_output/ios.m
@@ -101,10 +101,10 @@ vlc_module_end ()
 }
 @property (readonly) GLuint renderBuffer;
 @property (readonly) GLuint frameBuffer;
-@property (readwrite) vout_display_t* voutDisplay;
 @property (readonly) EAGLContext* eaglContext;
 @property GLuint shaderProgram;
 
+- (id)initWithFrameAndVd:(CGRect)frame withVd:(vout_display_t*)vd;
 - (void)createBuffers;
 - (void)destroyBuffers;
 - (void)resetBuffers;
@@ -162,16 +162,17 @@ static int Open(vlc_object_t *this)
 
 @autoreleasepool {
 /* setup the actual OpenGL ES view */
+
 [VLCOpenGLES2VideoView 
performSelectorOnMainThread:@selector(getNewView:)
- withObject:[NSValue 
valueWithPointer:>glESView]
-  waitUntilDone:YES];
+withObject:[NSArray 
arrayWithObjects:
+   [NSValue 
valueWithPointer:>glESView],
+   [NSValue 
valueWithPointer:vd], nil]
+ waitUntilDone:YES];
 if (!sys->glESView) {
 msg_Err(vd, "Creating OpenGL ES 2 view failed");
 goto bailout;
 }
 
-[sys->glESView setVoutDisplay:vd];
-
 [sys->glESView 
performSelectorOnMainThread:@selector(fetchViewContainer) withObject:nil 
waitUntilDone:YES];
 if (!sys->viewContainer) {
 msg_Err(vd, "Fetching view container failed");
@@ -252,8 +253,6 @@ static void Close (vlc_object_t *this)
 [sys->tapRecognizer release];
 }
 
-[sys->glESView setVoutDisplay:nil];
-
 var_Destroy (vd, "drawable-nsobject");
 @synchronized(sys->viewContainer) {
 [sys->glESView 
performSelectorOnMainThread:@selector(removeFromSuperview) withObject:nil 
waitUntilDone:NO];
@@ -422,20 +421,21 @@ static void GLESSwap(vlc_gl_t *gl)
  * Our UIView object
  */
 @implementation VLCOpenGLES2VideoView
-@synthesize voutDisplay = _voutDisplay, eaglContext = _eaglContext;
+@synthesize eaglContext = _eaglContext;
 
 + (Class)layerClass
 {
 return [CAEAGLLayer class];
 }
 
-+ (void)getNewView:(NSValue *)value
++ (void)getNewView:(NSArray *)value
 {
-id *ret = [value pointerValue];
-*ret = [[self alloc] initWithFrame:CGRectMake(0.,0.,320.,240.)];
+id *ret = [[value objectAtIndex:0] pointerValue];
+vout_display_t *vd = [[value objectAtIndex:1] pointerValue];
+*ret = [[self alloc] initWithFrameAndVd:CGRectMake(0.,0.,320.,240.) 
withVd:vd];
 }
 
-- (id)initWithFrame:(CGRect)frame
+- (id)initWithFrameAndVd:(CGRect)frame withVd:(vout_display_t*)vd
 {
 self = [super initWithFrame:frame];
 
@@ -446,6 +446,8 @@ static void GLESSwap(vlc_gl_t *gl)
 if (unlikely(!_appActive))
 return nil;
 
+_voutDisplay = vd;
+
 vlc_mutex_init(&_mutex);
 
 /* the following creates a new OpenGL ES context with the API version we
@@ -471,21 +473,10 @@ static void GLESSwap(vlc_gl_t *gl)
 
 [self releaseCurrent:previousEaglContext];
 
-return self;
-}
-
-- (void)setVoutDisplay:(vout_display_t *)vd
-{
-_voutDisplay = vd;
-
 [self createBuffers];
-
 [self reshape];
-}
 
-- (vout_display_t *)voutDisplay
-{
-return _voutDisplay;
+return self;
 }
 
 - (void)fetchViewContainer
@@ -581,10 +572,8 @@ static void GLESSwap(vlc_gl_t *gl)
 [_eaglContext renderbufferStorage:GL_RENDERBUFFER 
fromDrawable:(CAEAGLLayer *)self.layer];
 
 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 
GL_RENDERBUFFER, _renderBuffer);
-if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-if (_voutDisplay)
-msg_Err(_voutDisplay, "Failed to make complete framebuffer object 
%x", glCheckFramebufferStatus(GL_FRAMEBUFFER));
-}
+if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
+msg_Err(_voutDisplay, "Failed to make complete framebuffer object %x", 
glCheckFramebufferStatus(GL_FRAMEBUFFER));
 
 [self 

[vlc-commits] vout: ios: voutDisplay is now constant in glESView

2018-03-07 Thread Thomas Guillem
vlc | branch: master | Thomas Guillem  | Tue Mar  6 09:57:30 
2018 +0100| [86e82a420fffc31b473ce65285dbee977db8eb9c] | committer: Thomas 
Guillem

vout: ios: voutDisplay is now constant in glESView

This avoids to take care about locking (that was not correct).

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

 modules/video_output/ios.m | 61 ++
 1 file changed, 24 insertions(+), 37 deletions(-)

diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
index 92cf920720..8686d8b051 100644
--- a/modules/video_output/ios.m
+++ b/modules/video_output/ios.m
@@ -101,10 +101,10 @@ vlc_module_end ()
 }
 @property (readonly) GLuint renderBuffer;
 @property (readonly) GLuint frameBuffer;
-@property (readwrite) vout_display_t* voutDisplay;
 @property (readonly) EAGLContext* eaglContext;
 @property GLuint shaderProgram;
 
+- (id)initWithFrameAndVd:(CGRect)frame withVd:(vout_display_t*)vd;
 - (void)createBuffers;
 - (void)destroyBuffers;
 - (void)resetBuffers;
@@ -162,16 +162,17 @@ static int Open(vlc_object_t *this)
 
 @autoreleasepool {
 /* setup the actual OpenGL ES view */
+
 [VLCOpenGLES2VideoView 
performSelectorOnMainThread:@selector(getNewView:)
- withObject:[NSValue 
valueWithPointer:>glESView]
-  waitUntilDone:YES];
+withObject:[NSArray 
arrayWithObjects:
+   [NSValue 
valueWithPointer:>glESView],
+   [NSValue 
valueWithPointer:vd], nil]
+ waitUntilDone:YES];
 if (!sys->glESView) {
 msg_Err(vd, "Creating OpenGL ES 2 view failed");
 goto bailout;
 }
 
-[sys->glESView setVoutDisplay:vd];
-
 [sys->glESView 
performSelectorOnMainThread:@selector(fetchViewContainer) withObject:nil 
waitUntilDone:YES];
 if (!sys->viewContainer) {
 msg_Err(vd, "Fetching view container failed");
@@ -252,8 +253,6 @@ static void Close (vlc_object_t *this)
 [sys->tapRecognizer release];
 }
 
-[sys->glESView setVoutDisplay:nil];
-
 var_Destroy (vd, "drawable-nsobject");
 @synchronized(sys->viewContainer) {
 [sys->glESView 
performSelectorOnMainThread:@selector(removeFromSuperview) withObject:nil 
waitUntilDone:NO];
@@ -422,20 +421,21 @@ static void GLESSwap(vlc_gl_t *gl)
  * Our UIView object
  */
 @implementation VLCOpenGLES2VideoView
-@synthesize voutDisplay = _voutDisplay, eaglContext = _eaglContext;
+@synthesize eaglContext = _eaglContext;
 
 + (Class)layerClass
 {
 return [CAEAGLLayer class];
 }
 
-+ (void)getNewView:(NSValue *)value
++ (void)getNewView:(NSArray *)value
 {
-id *ret = [value pointerValue];
-*ret = [[self alloc] initWithFrame:CGRectMake(0.,0.,320.,240.)];
+id *ret = [[value objectAtIndex:0] pointerValue];
+vout_display_t *vd = [[value objectAtIndex:1] pointerValue];
+*ret = [[self alloc] initWithFrameAndVd:CGRectMake(0.,0.,320.,240.) 
withVd:vd];
 }
 
-- (id)initWithFrame:(CGRect)frame
+- (id)initWithFrameAndVd:(CGRect)frame withVd:(vout_display_t*)vd
 {
 self = [super initWithFrame:frame];
 
@@ -446,6 +446,8 @@ static void GLESSwap(vlc_gl_t *gl)
 if (unlikely(!_appActive))
 return nil;
 
+_voutDisplay = vd;
+
 vlc_mutex_init(&_mutex);
 
 /* the following creates a new OpenGL ES context with the API version we
@@ -471,21 +473,10 @@ static void GLESSwap(vlc_gl_t *gl)
 
 [self releaseCurrent:previousEaglContext];
 
-return self;
-}
-
-- (void)setVoutDisplay:(vout_display_t *)vd
-{
-_voutDisplay = vd;
-
 [self createBuffers];
-
 [self reshape];
-}
 
-- (vout_display_t *)voutDisplay
-{
-return _voutDisplay;
+return self;
 }
 
 - (void)fetchViewContainer
@@ -581,10 +572,8 @@ static void GLESSwap(vlc_gl_t *gl)
 [_eaglContext renderbufferStorage:GL_RENDERBUFFER 
fromDrawable:(CAEAGLLayer *)self.layer];
 
 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 
GL_RENDERBUFFER, _renderBuffer);
-if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-if (_voutDisplay)
-msg_Err(_voutDisplay, "Failed to make complete framebuffer object 
%x", glCheckFramebufferStatus(GL_FRAMEBUFFER));
-}
+if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
+msg_Err(_voutDisplay, "Failed to make complete framebuffer object %x", 
glCheckFramebufferStatus(GL_FRAMEBUFFER));
 
 [self releaseCurrent:previousEaglContext];
 }
@@ -671,17 +660,15 @@ static void GLESSwap(vlc_gl_t *gl)
 CGFloat scaleFactor = self.contentScaleFactor;