]> git.sesse.net Git - vlc/blobdiff - src/playlist/control.c
Revert "Remove useless assignation"
[vlc] / src / playlist / control.c
index a3f87c61eafff68e70f7c2dee5b51de6d0f403c7..4aed8889a5f90ca2f4cf4374e73a0cb462eab6c0 100644 (file)
@@ -66,6 +66,21 @@ void __pl_Release( vlc_object_t *p_this )
     vlc_object_release( pl );
 }
 
+void playlist_Lock( playlist_t *pl )
+{
+    vlc_mutex_lock( &pl_priv(pl)->lock );
+}
+
+void playlist_Unlock( playlist_t *pl )
+{
+    vlc_mutex_unlock( &pl_priv(pl)->lock );
+}
+
+void playlist_AssertLocked( playlist_t *pl )
+{
+    vlc_assert_locked( &pl_priv(pl)->lock );
+}
+
 int playlist_Control( playlist_t * p_playlist, int i_query,
                       bool b_locked, ... )
 {
@@ -83,14 +98,13 @@ int playlist_Control( playlist_t * p_playlist, int i_query,
 static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args )
 {
     playlist_item_t *p_item, *p_node;
-    vlc_value_t val;
 
     PL_ASSERT_LOCKED;
 
     if( !vlc_object_alive( p_playlist ) )
         return VLC_EGENERIC;
 
-    if( playlist_IsEmpty( p_playlist ) )
+    if( playlist_IsEmpty( p_playlist ) && i_query != PLAYLIST_STOP )
         return VLC_EGENERIC;
 
     switch( i_query )
@@ -123,8 +137,7 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
     case PLAYLIST_PLAY:
         if( pl_priv(p_playlist)->p_input )
         {
-            val.i_int = PLAYING_S;
-            var_Set( pl_priv(p_playlist)->p_input, "state", val );
+            var_SetInteger( pl_priv(p_playlist)->p_input, "state", PLAYING_S );
             break;
         }
         else
@@ -138,17 +151,13 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
         break;
 
     case PLAYLIST_PAUSE:
-        val.i_int = 0;
-        if( pl_priv(p_playlist)->p_input )
-            var_Get( pl_priv(p_playlist)->p_input, "state", &val );
-
-        if( val.i_int == PAUSE_S )
+        if( pl_priv(p_playlist)->p_input &&
+            var_GetInteger( pl_priv(p_playlist)->p_input, "state" ) == PAUSE_S )
         {
             pl_priv(p_playlist)->status.i_status = PLAYLIST_RUNNING;
             if( pl_priv(p_playlist)->p_input )
             {
-                val.i_int = PLAYING_S;
-                var_Set( pl_priv(p_playlist)->p_input, "state", val );
+                var_SetInteger( pl_priv(p_playlist)->p_input, "state", PLAYING_S );
             }
         }
         else
@@ -156,8 +165,7 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
             pl_priv(p_playlist)->status.i_status = PLAYLIST_PAUSED;
             if( pl_priv(p_playlist)->p_input )
             {
-                val.i_int = PAUSE_S;
-                var_Set( pl_priv(p_playlist)->p_input, "state", val );
+                var_SetInteger( pl_priv(p_playlist)->p_input, "state", PAUSE_S );
             }
         }
         break;