diff gui/ui/actions.c @ 33960:1cd81338af07

Rework fullscreen handling. This should fix all problems the GUI had with fullscreen handling. In interface.c: 1. Remove disabled code. 2. Set background of inactive video window to black (which prevents some flashing when starting the playback in fullscreen mode). 3. Set the state of the fullscreen button according to next playback mode (normal or fullscreen). 4. Make the video window invisible if there is no video, but don't make it visible that early if there is video. 5. Set the global fullscreen variable to get aspect scaling. (Hack) 6. In GUI_SETUP_VIDEO_WINDOW: a. First set the video size, b. then resize and reposition, c. then make the window visible, d. switch to/from fullscreen, if necessary. (This minimizes disturbances and the display stays in fullscreen mode and is smoothly black as often as possible.) 7. When playback ends, either act as in 6. or make video window quickly invisible if requested. In actions.c: 8. Allow calling uiFullScreen() even if not playing. 9. Remove unnecessary (and misplaced) repositioning (but not properly resizing) code from uiFullScreen(). 10. Don't call wsFullScreen() conditionally. 11. Only set global variable vo_fs, not the global fullscreen variable.
author ib
date Thu, 01 Sep 2011 20:15:40 +0000
parents 349e1fc4b6f2
children 81aaa1420337
line wrap: on
line diff
--- a/gui/ui/actions.c	Thu Sep 01 19:14:11 2011 +0000
+++ b/gui/ui/actions.c	Thu Sep 01 20:15:40 2011 +0000
@@ -43,46 +43,13 @@
 
 void uiFullScreen(void)
 {
-    if (!guiInfo.VideoWindow && guiInfo.Playing)
+    if (!guiInfo.VideoWindow)
         return;
 
-    if (guiInfo.Playing && guiApp.subWindow.isFullScreen) {
-        guiApp.subWindow.OldWidth  = guiInfo.VideoWidth;
-        guiApp.subWindow.OldHeight = guiInfo.VideoHeight;
-
-        switch (guiApp.sub.x) {
-        case -1:
-            guiApp.subWindow.OldX = wsMaxX / 2 - guiApp.subWindow.OldWidth / 2 + wsOrgX;
-            break;
-
-        case -2:
-            guiApp.subWindow.OldX = wsMaxX - guiApp.subWindow.OldWidth + wsOrgX;
-            break;
-
-        default:
-            guiApp.subWindow.OldX = guiApp.sub.x;
-            break;
-        }
+    wsFullScreen(&guiApp.subWindow);
 
-        switch (guiApp.sub.y) {
-        case -1:
-            guiApp.subWindow.OldY = wsMaxY / 2 - guiApp.subWindow.OldHeight / 2 + wsOrgY;
-            break;
-
-        case -2:
-            guiApp.subWindow.OldY = wsMaxY - guiApp.subWindow.OldHeight + wsOrgY;
-            break;
+    vo_fs = guiApp.subWindow.isFullScreen;
 
-        default:
-            guiApp.subWindow.OldY = guiApp.sub.y;
-            break;
-        }
-    }
-
-    if (guiInfo.Playing || gtkShowVideoWindow)
-        wsFullScreen(&guiApp.subWindow);
-
-    fullscreen = vo_fs = guiApp.subWindow.isFullScreen;
     wsSetLayer(wsDisplay, guiApp.mainWindow.WindowID, guiApp.subWindow.isFullScreen);
 
     if (guiApp.menuIsPresent)