]> git.sesse.net Git - vlc/blobdiff - src/playlist/control.c
libvlccore: export sout_MuxGetStream
[vlc] / src / playlist / control.c
index 7e1b376912bbd386dbe04ef894c416b601a4de4b..1f10fb71d7dee518cb2638bd95c1d862c4decc81 100644 (file)
@@ -68,17 +68,17 @@ void __pl_Release( vlc_object_t *p_this )
 
 void playlist_Lock( playlist_t *pl )
 {
-    vlc_object_lock( pl );
+    vlc_mutex_lock( &pl_priv(pl)->lock );
 }
 
 void playlist_Unlock( playlist_t *pl )
 {
-    vlc_object_unlock( pl );
+    vlc_mutex_unlock( &pl_priv(pl)->lock );
 }
 
 void playlist_AssertLocked( playlist_t *pl )
 {
-    vlc_object_assert_locked( pl );
+    vlc_assert_locked( &pl_priv(pl)->lock );
 }
 
 int playlist_Control( playlist_t * p_playlist, int i_query,
@@ -104,7 +104,7 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
     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 )
@@ -151,22 +151,21 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
         break;
 
     case PLAYLIST_PAUSE:
-        if( pl_priv(p_playlist)->p_input &&
-            var_GetInteger( pl_priv(p_playlist)->p_input, "state" ) == PAUSE_S )
+        if( !pl_priv(p_playlist)->p_input )
+        {    /* FIXME: is this really useful without input? */
+             pl_priv(p_playlist)->status.i_status = PLAYLIST_PAUSED;
+             break;
+        }
+
+        if( 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 )
-            {
-                var_SetInteger( pl_priv(p_playlist)->p_input, "state", PLAYING_S );
-            }
+            var_SetInteger( pl_priv(p_playlist)->p_input, "state", PLAYING_S );
         }
         else
         {
             pl_priv(p_playlist)->status.i_status = PLAYLIST_PAUSED;
-            if( pl_priv(p_playlist)->p_input )
-            {
-                var_SetInteger( pl_priv(p_playlist)->p_input, "state", PAUSE_S );
-            }
+            var_SetInteger( pl_priv(p_playlist)->p_input, "state", PAUSE_S );
         }
         break;