[vlc-devel] [PATCH 4/5] caopengllayer: call vout_window_ReportMouseXXX directly

Steve Lhomme robux4 at ycbcr.xyz
Mon Nov 2 16:18:14 CET 2020


No need to use the old vout_display_SendMouseXXX calls or lock the
VLCCAOpenGLLayer.

It's probably possible to set the value in the initializer so it's always set.
---
 modules/video_output/caopengllayer.m | 47 ++++++++++++----------------
 1 file changed, 20 insertions(+), 27 deletions(-)

diff --git a/modules/video_output/caopengllayer.m b/modules/video_output/caopengllayer.m
index 587817d1530..ef424047410 100644
--- a/modules/video_output/caopengllayer.m
+++ b/modules/video_output/caopengllayer.m
@@ -82,6 +82,7 @@ static void OpenglSwap         (vlc_gl_t *gl);
 @interface VLCCAOpenGLLayer : CAOpenGLLayer
 
 @property (nonatomic, readwrite) vout_display_t* voutDisplay;
+ at property (nonatomic, readwrite) vout_window_t*  window;
 @property (nonatomic, readwrite) CGLContextObj glContext;
 
 @end
@@ -155,6 +156,7 @@ static int Open (vout_display_t *vd, const vout_display_cfg_t *cfg,
 
         [CATransaction begin];
         sys->cgLayer = [[VLCCAOpenGLLayer alloc] init];
+        [sys->cgLayer setVoutWindow:cfg->window];
         [sys->cgLayer setVoutDisplay:vd];
 
         [sys->cgLayer performSelectorOnMainThread:@selector(display)
@@ -424,6 +426,11 @@ static void *OurGetProcAddress (vlc_gl_t *gl, const char *name)
     return self;
 }
 
+- (void)setVoutWindow:(vout_window_t *)aWindow
+{
+    _window = aWindow;
+}
+
 - (void)setVoutDisplay:(vout_display_t *)aVd
 {
     _voutDisplay = aVd;
@@ -510,41 +517,27 @@ static void *OurGetProcAddress (vlc_gl_t *gl, const char *name)
 
 - (void)mouseButtonDown:(int)buttonNumber
 {
-    @synchronized (self) {
-        if (_voutDisplay) {
-            if (buttonNumber == 0)
-                vout_display_SendEventMousePressed (_voutDisplay, MOUSE_BUTTON_LEFT);
-            else if (buttonNumber == 1)
-                vout_display_SendEventMousePressed (_voutDisplay, MOUSE_BUTTON_RIGHT);
-            else
-                vout_display_SendEventMousePressed (_voutDisplay, MOUSE_BUTTON_CENTER);
-        }
-    }
+    if (buttonNumber == 0)
+        vout_window_ReportMousePressed (_window, MOUSE_BUTTON_LEFT);
+    else if (buttonNumber == 1)
+        vout_window_ReportMousePressed (_window, MOUSE_BUTTON_RIGHT);
+    else
+        vout_window_ReportMousePressed (_window, MOUSE_BUTTON_CENTER);
 }
 
 - (void)mouseButtonUp:(int)buttonNumber
 {
-    @synchronized (self) {
-        if (_voutDisplay) {
-            if (buttonNumber == 0)
-                vout_display_SendEventMouseReleased (_voutDisplay, MOUSE_BUTTON_LEFT);
-            else if (buttonNumber == 1)
-                vout_display_SendEventMouseReleased (_voutDisplay, MOUSE_BUTTON_RIGHT);
-            else
-                vout_display_SendEventMouseReleased (_voutDisplay, MOUSE_BUTTON_CENTER);
-        }
-    }
+    if (buttonNumber == 0)
+        vout_window_ReportMouseReleased (_window, MOUSE_BUTTON_LEFT);
+    else if (buttonNumber == 1)
+        vout_window_ReportMouseReleased (_window, MOUSE_BUTTON_RIGHT);
+    else
+        vout_window_ReportMouseReleased (_window, MOUSE_BUTTON_CENTER);
 }
 
 - (void)mouseMovedToX:(double)xValue Y:(double)yValue
 {
-    @synchronized (self) {
-        if (_voutDisplay) {
-            vout_display_SendMouseMovedDisplayCoordinates (_voutDisplay,
-                                                           xValue,
-                                                           yValue);
-        }
-    }
+    vout_window_ReportMouseMoved (_window, xValue, yValue);
 }
 
 @end
-- 
2.26.2



More information about the vlc-devel mailing list