]> git.sesse.net Git - vlc/commitdiff
Fix for the fullscreen button state (it is only enabled if a vout is present)
authorBenjamin Pracht <bigben@videolan.org>
Mon, 15 Dec 2003 19:25:56 +0000 (19:25 +0000)
committerBenjamin Pracht <bigben@videolan.org>
Mon, 15 Dec 2003 19:25:56 +0000 (19:25 +0000)
modules/gui/macosx/controls.m
modules/gui/macosx/intf.h
modules/gui/macosx/intf.m
modules/gui/macosx/vout.m

index 4bcbd8d05fac0adf3a853497df104c1d9220c08c..06018f682498d178d78761e530e09dea6544cee9 100644 (file)
@@ -2,7 +2,7 @@
  * controls.m: MacOS X interface plugin
  *****************************************************************************
  * Copyright (C) 2002-2003 VideoLAN
- * $Id: controls.m,v 1.58 2003/12/11 19:34:47 hartman Exp $
+ * $Id: controls.m,v 1.59 2003/12/15 19:25:56 bigben Exp $
  *
  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
  *          Christophe Massiot <massiot@via.ecp.fr>
                 }
                 else
                 {
-                    [o_btn_fullscreen setState: ![o_window isFullscreen]];
                     [o_window toggleFullscreen];
                 }
                 break;
index 0b33919536733621c58c12a521de77f602fff48e..37acdeec06326c7d0a4b1239b8acb450dc7daad1 100644 (file)
@@ -2,7 +2,7 @@
  * intf.h: MacOS X interface plugin
  *****************************************************************************
  * Copyright (C) 2002-2003 VideoLAN
- * $Id: intf.h,v 1.51 2003/12/11 19:34:47 hartman Exp $
+ * $Id: intf.h,v 1.52 2003/12/15 19:25:56 bigben Exp $
  *
  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -75,7 +75,8 @@ struct intf_sys_t
     vlc_bool_t b_play_status;
     vlc_bool_t b_playlist_update;
     vlc_bool_t b_current_title_update;
-    
+    vlc_bool_t b_fullscreen_update;
+
     /* menus handlers */
     vlc_bool_t b_input_update;
     vlc_bool_t b_aout_update;
index c0ec0f7df7f7dd942396576af1d2b767649d1185..37c248209d849a0fcd4a41d860845f77dd039b34 100644 (file)
@@ -2,7 +2,7 @@
  * intf.m: MacOS X interface plugin
  *****************************************************************************
  * Copyright (C) 2002-2003 VideoLAN
- * $Id: intf.m,v 1.106 2003/12/15 15:38:26 hartman Exp $
+ * $Id: intf.m,v 1.107 2003/12/15 19:25:56 bigben Exp $
  *
  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -73,6 +73,7 @@ int E_(OpenIntf) ( vlc_object_t *p_this )
     [[VLCApplication sharedApplication] autorelease];
     [NSApp setIntf: p_intf];
 
+
     [NSBundle loadNibNamed: @"MainMenu" owner: NSApp];
 
     return( 0 );
@@ -615,7 +616,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key )
     while( !p_intf->b_die )
     {
         playlist_t * p_playlist;
-
+        vlc_value_t val;
         vlc_mutex_lock( &p_intf->change_lock );
 
         p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, 
@@ -657,6 +658,15 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key )
             
 #undef p_input
             vlc_object_release( p_playlist );
+
+            var_Create(p_intf,"intf-change",VLC_VAR_BOOL );
+            if( var_Get( p_intf, "intf-change", &val )
+                        >= 0 && val.b_bool )
+            {
+                p_intf->p_sys->b_fullscreen_update = TRUE;
+            }
+            val.b_bool = VLC_FALSE;
+            var_Set( p_intf,"intf-change",val);
         }
 
         vlc_mutex_unlock( &p_intf->change_lock );
@@ -758,10 +768,36 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key )
         [o_timefield setStringValue: @"0:00:00"];
 
         [self manageVolumeSlider];
-
         p_intf->p_sys->b_intf_update = VLC_FALSE;
     }
 
+    if (p_intf->p_sys->b_fullscreen_update )
+    { 
+        vout_thread_t  * p_vout;
+        vlc_value_t val;
+        p_vout=vlc_object_find(p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE);
+        if (p_vout !=NULL)
+        {
+            if( var_Get( p_intf, "fullscreen", &val )
+                        >= 0 && val.b_bool )
+            {
+                [o_btn_fullscreen setState:VLC_TRUE];
+            }
+            else
+            {
+                [o_btn_fullscreen setState:VLC_FALSE];
+            }
+        [o_btn_fullscreen setEnabled: VLC_TRUE];
+        vlc_object_release( p_vout );
+        }
+        else
+        {
+        [o_btn_fullscreen setState: VLC_FALSE];
+        [o_btn_fullscreen setEnabled: VLC_FALSE];
+        }
+    p_intf->p_sys->b_fullscreen_update = VLC_FALSE;
+    }
+
     if( p_intf->p_sys->b_playing && p_input != NULL )
     {
         vlc_value_t time;
index a6423f3f3a97c8f3866aa5c290e40bdd6d91133f..d311ef9687c483723752c7b6af90fae798f1634b 100644 (file)
@@ -2,7 +2,7 @@
  * vout.m: MacOS X video output plugin
  *****************************************************************************
  * Copyright (C) 2001-2003 VideoLAN
- * $Id: vout.m,v 1.66 2003/12/08 19:50:22 gbazin Exp $
+ * $Id: vout.m,v 1.67 2003/12/15 19:25:56 bigben Exp $
  *
  * Authors: Colin Delacroix <colin@zoy.org>
  *          Florian G. Pflug <fgp@phlo.org>
@@ -417,6 +417,8 @@ static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
 static int CoSendRequest( vout_thread_t *p_vout, SEL sel )
 {
     int i_ret = 0;
+    vlc_value_t val;
+    intf_thread_t * p_intf;
 
     VLCVout * o_vlv = [[VLCVout alloc] init];
 
@@ -427,6 +429,21 @@ static int CoSendRequest( vout_thread_t *p_vout, SEL sel )
 
     [o_vlv release];
 
+    /*This makes this function dependant of the presence of a macosx 
+    interface. We do not check if this interface exists, since it has 
+    already been done before.*/
+
+    p_intf = [NSApp getIntf];
+
+    val.b_bool = p_vout->b_fullscreen;
+    var_Create(p_intf,"fullscreen",VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
+    var_Set(p_intf,"fullscreen",val);
+
+    val.b_bool = VLC_TRUE;
+    var_Create(p_intf,"intf-change",VLC_VAR_BOOL);
+    var_Set(p_intf, "intf-change",val);
+
+
     return( i_ret );
 }
 
@@ -442,7 +459,7 @@ static int CoCreateWindow( vout_thread_t *p_vout )
         msg_Err( p_vout, "CoSendRequest (createWindow) failed" );
         return( 1 );
     }
-
+    
     return( 0 );
 }
 
@@ -482,8 +499,6 @@ static int CoToggleFullscreen( vout_thread_t *p_vout )
     
     p_vout->b_fullscreen = !p_vout->b_fullscreen;
 
-    config_PutInt( p_vout, "fullscreen", p_vout->b_fullscreen );
-
     if( CoCreateWindow( p_vout ) )
     {
         msg_Err( p_vout, "unable to create window" );
@@ -1273,6 +1288,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
     
     [p_vout->p_sys->o_window updateTitle];
     [p_vout->p_sys->o_window makeKeyAndOrderFront: nil];
+
 }
 
 - (void)destroyWindow:(NSValue *)o_value