]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/controls.m
macosx: Save current fullscreen state.
[vlc] / modules / gui / macosx / controls.m
index 217d1d805fe4bf6d3ee1d1207d1aa5b45be17311..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
             }
             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 );
     }
 
 }
     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 );