]> git.sesse.net Git - vlc/commitdiff
Privatize the playlist lock
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 4 Mar 2009 21:24:57 +0000 (23:24 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 4 Mar 2009 21:25:50 +0000 (23:25 +0200)
src/playlist/control.c
src/playlist/engine.c
src/playlist/playlist_internal.h
src/playlist/thread.c

index 7e1b376912bbd386dbe04ef894c416b601a4de4b..313a14506dbf966155ae66a8063ac6367f7c7c4c 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,
index 2a464592ef44aa0b55a1dab091d7c46e75b64a2d..0c9a7bfdd23fc59fc2aeb57438f810d6644da2d6 100644 (file)
@@ -81,6 +81,7 @@ playlist_t * playlist_Create( vlc_object_t *p_parent )
     libvlc_priv(p_parent->p_libvlc)->p_playlist = p_playlist;
 
     VariablesInit( p_playlist );
+    vlc_mutex_init( &p->lock );
     vlc_cond_init( &p->signal );
 
     /* Initialise data structures */
@@ -181,6 +182,7 @@ static void playlist_Destructor( vlc_object_t * p_this )
     assert( !p_sys->p_fetcher );
 
     vlc_cond_destroy( &p_sys->signal );
+    vlc_mutex_destroy( &p_sys->lock );
 
     /* Remove all remaining items */
     FOREACH_ARRAY( playlist_item_t *p_del, p_playlist->all_items )
index aed7edf04419d72b7688ae870684ca5894c971ba..86279f66ed60b015f620896829ffa696dde72954 100644 (file)
@@ -83,6 +83,7 @@ typedef struct playlist_private_t
     } request;
 
     vlc_thread_t thread; /**< engine thread */
+    vlc_mutex_t lock; /**< dah big playlist global lock */
     vlc_cond_t signal; /**< wakes up the playlist engine thread */
 
     int      i_last_playlist_id; /**< Last id to an item */
index 5ec6ee18b24ff39ef8f9ec285ce25f56e6ae0edf..0dac88ae5d77a1c1d3ffb070045572c4939c5a77 100644 (file)
@@ -552,8 +552,7 @@ static void LoopRequest( playlist_t *p_playlist )
         else
         {
             if( vlc_object_alive( p_playlist ) )
-                vlc_cond_wait( &pl_priv(p_playlist)->signal,
-                               &vlc_internals(p_playlist)->lock );
+                vlc_cond_wait( &p_sys->signal, &p_sys->lock );
         }
         return;
     }
@@ -598,8 +597,7 @@ static void *Thread ( void *data )
 
         /* If there is an input, check that it doesn't need to die. */
         while( !LoopInput( p_playlist ) )
-            vlc_cond_wait( &pl_priv(p_playlist)->signal,
-                           &vlc_internals(p_playlist)->lock );
+            vlc_cond_wait( &p_sys->signal, &p_sys->lock );
 
         LoopRequest( p_playlist );
     }