]> git.sesse.net Git - vlc/commitdiff
skins2: improve fullscreen behaviour
authorErwan Tulou <erwan10@videolan.org>
Sat, 22 Jun 2013 00:07:00 +0000 (02:07 +0200)
committerErwan Tulou <erwan10@videolan.org>
Sat, 22 Jun 2013 11:06:28 +0000 (13:06 +0200)
At the core level, the 'f' hotkey and the double click are managed in a
slightly different way. The former sets up both the playlist and the vout
"fullscreen" variables whereas the latter only sets up the vout variable.

This patch first relies on the vout state if any, and falls back to the
playlist state. This ensures that the fullscreen button always works
consistently for the user. Otherwise, user needs to press twice instead
of once when the playlist and the vout are no longer in sync (after a double
click)

modules/gui/skins2/commands/cmd_fullscreen.cpp

index a2ef8f9b386a5e8a636fa499ae4e62f7f870fb08..7dcfe7923c70ab72edb8f9154802109a71137350 100644 (file)
 
 void CmdFullscreen::execute()
 {
-    bool fs = var_ToggleBool( pl_Get( getIntf() ), "fullscreen" );
-
-    if( getIntf()->p_sys->p_input == NULL )
-        return;
-    vout_thread_t *pVout = input_GetVout( getIntf()->p_sys->p_input );
-    if( pVout )
+    bool fs;
+    bool hasVout = false;
+    if( getIntf()->p_sys->p_input != NULL )
     {
-        // Switch fullscreen
-        var_SetBool( pVout, "fullscreen", fs );
-        vlc_object_release( pVout );
+        vout_thread_t *pVout = input_GetVout( getIntf()->p_sys->p_input );
+        if( pVout )
+        {
+            // Toggle fullscreen
+            fs = var_ToggleBool( pVout, "fullscreen" );
+            vlc_object_release( pVout );
+            hasVout = true;
+        }
     }
+
+    if( hasVout )
+        var_SetBool( pl_Get( getIntf() ), "fullscreen", fs );
+    else
+        var_ToggleBool( pl_Get( getIntf() ), "fullscreen" );
 }