]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/controls.m
macosx: Save current fullscreen state.
[vlc] / modules / gui / macosx / controls.m
index 7a8d41b8af8965658c38eea4ff5969e3abd1dfd7..75536d4673548f23fdbb47ae53ceba91ba75ee04 100644 (file)
     intf_thread_t * p_intf = VLCIntf;
     playlist_t * p_playlist = pl_Yield( p_intf );
 
-    vlc_mutex_lock( &p_playlist->object_lock );
+    vlc_object_lock( p_playlist );
     if( playlist_IsEmpty( p_playlist ) )
     {
-        vlc_mutex_unlock( &p_playlist->object_lock );
+        vlc_object_unlock( p_playlist );
         vlc_object_release( p_playlist );
         [o_main intfOpenFileGeneric: (id)sender];
     }
     else
     {
-        vlc_mutex_unlock( &p_playlist->object_lock );
+        vlc_object_unlock( p_playlist );
         vlc_object_release( p_playlist );
     }
 
     return o_vout_view;
 }
 
-
 - (IBAction)stop:(id)sender
 {
     vlc_value_t val;
     intf_thread_t * p_intf = VLCIntf;
     val.i_int = config_GetInt( p_intf, "key-stop" );
     var_Set( p_intf->p_libvlc, "key-pressed", val );
+    /* Close the window directly, because we do know that there
+     * won't be anymore video. It's currently waiting a bit. */
+    [[[self getVoutView] window] orderOut:self];
 }
 
 - (IBAction)faster:(id)sender
         config_PutInt( p_playlist, "random", 0 );
     }
 
-    p_intf->p_sys->b_playmode_update = VLC_TRUE;
-    p_intf->p_sys->b_intf_update = VLC_TRUE;
+    p_intf->p_sys->b_playmode_update = true;
+    p_intf->p_sys->b_intf_update = true;
     vlc_object_release( p_playlist );
 }
 
         [self repeatOne];
  
         /* prepare core communication */
-        repeating.b_bool = VLC_TRUE;
-        looping.b_bool = VLC_FALSE;
+        repeating.b_bool = true;
+        looping.b_bool = false;
         config_PutInt( p_playlist, "repeat", 1 );
         config_PutInt( p_playlist, "loop", 0 );
  
         [self repeatAll];
  
         /* prepare core communication */
-        repeating.b_bool = VLC_FALSE;
-        looping.b_bool = VLC_TRUE;
+        repeating.b_bool = false;
+        looping.b_bool = true;
         config_PutInt( p_playlist, "repeat", 0 );
         config_PutInt( p_playlist, "loop", 1 );
  
         [self repeatOff];
  
         /* prepare core communication */
-        repeating.b_bool = VLC_FALSE;
-        looping.b_bool = VLC_FALSE;
+        repeating.b_bool = false;
+        looping.b_bool = false;
         config_PutInt( p_playlist, "repeat", 0 );
         config_PutInt( p_playlist, "loop", 0 );
  
     /* communicate with core and the main intf loop */
     var_Set( p_playlist, "repeat", repeating );
     var_Set( p_playlist, "loop", looping );
-    p_intf->p_sys->b_playmode_update = VLC_TRUE;
-    p_intf->p_sys->b_intf_update = VLC_TRUE;
+    p_intf->p_sys->b_playmode_update = true;
+    p_intf->p_sys->b_intf_update = true;
 
     vlc_object_release( p_playlist );
 }
         config_PutInt( p_playlist, "repeat", 0 );
     }
  
-    p_intf->p_sys->b_playmode_update = VLC_TRUE;
-    p_intf->p_sys->b_intf_update = VLC_TRUE;
+    p_intf->p_sys->b_playmode_update = true;
+    p_intf->p_sys->b_intf_update = true;
     vlc_object_release( p_playlist );
 }
 
         config_PutInt( p_playlist, "loop", 0 );
     }
 
-    p_intf->p_sys->b_playmode_update = VLC_TRUE;
-    p_intf->p_sys->b_intf_update = VLC_TRUE;
+    p_intf->p_sys->b_playmode_update = true;
+    p_intf->p_sys->b_intf_update = true;
     vlc_object_release( p_playlist );
 }
 
             }
             else
             {
+                playlist_t * p_playlist = pl_Yield( VLCIntf );
+                /* Fullscreen state for next time will be saved here too */
                 [o_vout_view toggleFullscreen];
             }
         }
             var_Set( p_playlist, "fullscreen", (vlc_value_t)!val.b_bool );
         }
 
-        vlc_object_release( p_playlist );
+        pl_Release( VLCIntf );
     }
 
 }
         [self setupVarMenu: o_menu forMenuItem: o_mi target:p_object
                         var:psz_variable selector:pf_callback];
  
-        if( text.psz_string ) free( text.psz_string );
+        free( text.psz_string );
         return;
     }
 
         break;
 
     default:
-        if( text.psz_string ) free( text.psz_string );
+        free( text.psz_string );
         return;
     }
 
     if( ( i_type & VLC_VAR_TYPE ) == VLC_VAR_STRING ) free( val.psz_string );
-    if( text.psz_string ) free( text.psz_string );
+    free( text.psz_string );
 }
 
 
         var_Set( p_object, strdup([o_data name]), [o_data value] );
         vlc_object_release( p_object );
         [o_pool release];
-        return VLC_TRUE;
+        return true;
     }
     [o_pool release];
     return VLC_EGENERIC;
     vlc_value_t val;
     intf_thread_t * p_intf = VLCIntf;
     playlist_t * p_playlist = pl_Yield( p_intf );
-
-    vlc_mutex_lock( &p_playlist->object_lock );
-
-#define p_input p_playlist->p_input
+    input_thread_t * p_input = playlist_CurrentInput( p_playlist );
 
     if( [[o_mi title] isEqualToString: _NS("Faster")] ||
         [[o_mi title] isEqualToString: _NS("Slower")] )
              [[o_mi title] isEqualToString: _NS("Next")] )
     {
         /** \todo fix i_size use */
+        PL_LOCK;
         bEnabled = p_playlist->items.i_size > 1;
+        PL_UNLOCK;
     }
     else if( [[o_mi title] isEqualToString: _NS("Random")] )
     {
                     break;
                 }
             }
+
             vlc_object_release( (vlc_object_t *)p_vout );
         }
-        else if( [[o_mi title] isEqualToString: _NS("Fullscreen")] )
+        if( [[o_mi title] isEqualToString: _NS("Fullscreen")] )
         {
             var_Get( p_playlist, "fullscreen", &val );
             [o_mi setState: val.b_bool];
         [o_main setupMenus]; /* Make sure video menu is up to date */
     }
 
-    vlc_mutex_unlock( &p_playlist->object_lock );
+    if( p_input ) vlc_object_release( p_input );
     vlc_object_release( p_playlist );
 
     return( bEnabled );