]> git.sesse.net Git - vlc/blobdiff - modules/video_output/macosx.m
Qt: adv settings: Optimize synchronization panel
[vlc] / modules / video_output / macosx.m
index 553890e7ac9ad4d71b14beb39c91a910f1061e9d..17f697d4b1e4769bac40a0602765bf4d01c47641 100644 (file)
 #include <vlc_dialog.h>
 #include "opengl.h"
 
+#ifndef MAC_OS_X_VERSION_10_7
+enum {
+    NSApplicationPresentationFullScreen                 = (1 << 10),
+    NSApplicationPresentationAutoHideToolbar            = (1 << 11)
+};
+#endif
+
 /**
  * Forward declarations
  */
@@ -200,8 +207,10 @@ static int Open(vlc_object_t *this)
     sys->gl.swap = OpenglSwap;
     sys->gl.getProcAddress = NULL;
     sys->gl.sys = sys;
+    const vlc_fourcc_t *subpicture_chromas;
+    video_format_t fmt = vd->fmt;
 
-       sys->vgl = vout_display_opengl_New(&vd->fmt, NULL, &sys->gl);
+       sys->vgl = vout_display_opengl_New(&vd->fmt, &subpicture_chromas, &sys->gl);
        if (!sys->vgl)
     {
         sys->gl.sys = NULL;
@@ -211,6 +220,8 @@ static int Open(vlc_object_t *this)
     /* */
     vout_display_info_t info = vd->info;
     info.has_pictures_invalid = false;
+    info.has_event_thread = true;
+    info.subpicture_chromas = subpicture_chromas;
 
     /* Setup vout_display_t once everything is fine */
     vd->info = info;
@@ -314,7 +325,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
         }
         case VOUT_DISPLAY_CHANGE_DISPLAY_FILLED:
         {
-            [[sys->glView window] performSelectorOnMainThread:@selector(performZoom:) withObject: nil waitUntilDone:NO];
+            [[sys->glView window] performSelectorOnMainThread:@selector(zoom:) withObject: nil waitUntilDone:NO];
             return VLC_SUCCESS;
         }
         case VOUT_DISPLAY_CHANGE_DISPLAY_SIZE:
@@ -322,6 +333,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
         case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
         case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
         {
+            NSAutoreleasePool * o_pool = [[NSAutoreleasePool alloc] init];
             NSPoint topleftbase;
             NSPoint topleftscreen;
             NSRect new_frame;
@@ -357,6 +369,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
 
                 [sys->glView performSelectorOnMainThread:@selector(setWindowFrameWithValue:) withObject:[NSValue valueWithRect:new_frame] waitUntilDone:NO];
             }
+            [o_pool release];
             return VLC_SUCCESS;
         }
 
@@ -477,10 +490,13 @@ static void OpenglSwap(vlc_gl_t *gl)
  */
 - (void)setWindowFrameWithValue:(NSValue *)value
 {
-    NSRect frame = [value rectValue];
-    if (frame.origin.x <= 0.0 && frame.origin.y <= 0.0)
-        [[self window] center];
-    [[self window] setFrame:frame display:YES animate: YES];
+    if (!(NSAppKitVersionNumber >= 1115.2 && [NSApp currentSystemPresentationOptions] == NSApplicationPresentationFullScreen))
+    {
+        NSRect frame = [value rectValue];
+        if (frame.origin.x <= 0.0 && frame.origin.y <= 0.0)
+            [[self window] center];
+        [[self window] setFrame:frame display:YES animate: YES];
+    }
 }
 
 /**