]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/VLCVoutWindowController.m
macosx: prevent continuing playback when pause is requested (fixes #8710)
[vlc] / modules / gui / macosx / VLCVoutWindowController.m
index 7af4dda573ee5938b3e15a7f59b4203e637ba96a..0ddc33860687b6fbfe174cd736d10036fe664a2f 100644 (file)
     VLCVoutView *o_vout_view;
     VLCVideoWindowCommon *o_new_video_window;
 
+    // should be called before any window resizing occurs
+    [[VLCMainWindow sharedInstance] videoplayWillBeStarted];
+
     if (b_multiple_vout_windows && b_video_wallpaper)
         b_video_wallpaper = false;
 
-    // TODO: make lion fullscreen compatible with video-wallpaper and !embedded-video
+    // TODO: make lion fullscreen compatible with video-wallpaper
     if ((b_video_wallpaper || !b_video_deco) && !b_nativeFullscreenMode) {
         // b_video_wallpaper is priorized over !b_video_deco
 
         }
     }
 
+    NSSize videoViewSize = NSMakeSize(videoViewPosition.size.width, videoViewPosition.size.height);
+
+    // TODO: find a cleaner way for "start in fullscreen"
+    // Start in fs, because either prefs settings, or fullscreen button was pressed before
+    if (var_InheritBool(VLCIntf, "fullscreen") || var_GetBool(pl_Get(VLCIntf), "fullscreen")) {
+
+        // this is not set when we start in fullscreen because of
+        // fullscreen settings in video prefs the second time
+        var_SetBool(p_wnd->p_parent, "fullscreen", 1);
+
+        int i_full = 1;
+
+        SEL sel = @selector(setFullscreen:forWindow:);
+        NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:sel]];
+        [inv setTarget:self];
+        [inv setSelector:sel];
+        [inv setArgument:&i_full atIndex:2];
+        [inv setArgument:&p_wnd atIndex:3];
+
+        NSTimeInterval resizeTime = 0.;
+        if(!b_nonembedded && !b_video_wallpaper) {
+            NSRect window_rect = [o_new_video_window getWindowRectForProposedVideoViewSize:videoViewSize];
+            resizeTime = [o_new_video_window animationResizeTime:window_rect];
+            resizeTime += 0.1;
+        }
+        
+        [NSTimer scheduledTimerWithTimeInterval:resizeTime invocation:inv repeats:NO];
+    }
+
     if (!b_video_wallpaper) {
         // set window size
-        NSSize videoViewSize = NSMakeSize(videoViewPosition.size.width, videoViewPosition.size.height);
 
         if (b_nonembedded) {
             NSRect window_rect = [o_new_video_window getWindowRectForProposedVideoViewSize:videoViewSize];
         // cascade windows if we have more than one vout
         if (b_multiple_vout_windows) {
             if ([o_vout_dict count] == 1) {
-                NSWindow * o_first_window = [o_vout_dict objectForKey: [o_vout_dict allKeys][0]];
+                NSWindow * o_first_window = [o_vout_dict objectForKey: [[o_vout_dict allKeys] objectAtIndex:0]];
 
                 NSPoint topleftbase = NSMakePoint(0, [o_first_window frame].size.height);
                 top_left_point = [o_first_window convertBaseToScreen: topleftbase];