]> git.sesse.net Git - vlc/blobdiff - src/playlist/control.c
Privatize input_Preparse
[vlc] / src / playlist / control.c
index 9d565bb9496bfc8c9e784d06148af9389826238d..f9260e072a92ba636e1ec6740abdb16ff1c38fd0 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_object_lock( pl );
+}
+
+void playlist_Unlock( playlist_t *pl )
+{
+    vlc_object_unlock( pl );
+}
+
+void playlist_AssertLocked( playlist_t *pl )
+{
+    vlc_object_assert_locked( pl );
+}
+
 int playlist_Control( playlist_t * p_playlist, int i_query,
                       bool b_locked, ... )
 {
@@ -176,7 +191,7 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
         msg_Err( p_playlist, "unknown playlist query" );
         return VLC_EBADVAR;
     }
-    vlc_object_signal_unlocked( p_playlist );
+    vlc_cond_signal( &pl_priv(p_playlist)->signal );
 
     return VLC_SUCCESS;
 }
@@ -186,21 +201,27 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
  *****************************************************************************/
 /** Enqueue an item for preparsing */
 int playlist_PreparseEnqueue( playlist_t *p_playlist,
-                              input_item_t *p_item )
+                              input_item_t *p_item, bool b_locked )
 {
     playlist_private_t *p_sys = pl_priv(p_playlist);
 
-    playlist_preparser_Push( p_sys->p_preparser, p_item );
+    PL_LOCK_IF( !b_locked );
+    if( p_sys->p_preparser )
+        playlist_preparser_Push( p_sys->p_preparser, p_item );
+    PL_UNLOCK_IF( !b_locked );
 
     return VLC_SUCCESS;
 }
 
 int playlist_AskForArtEnqueue( playlist_t *p_playlist,
-                               input_item_t *p_item )
+                               input_item_t *p_item, bool b_locked )
 {
     playlist_private_t *p_sys = pl_priv(p_playlist);
 
-    playlist_fetcher_Push( p_sys->p_fetcher, p_item );
+    PL_LOCK_IF( !b_locked );
+    if( p_sys->p_fetcher )
+        playlist_fetcher_Push( p_sys->p_fetcher, p_item );
+    PL_UNLOCK_IF( !b_locked );
 
     return VLC_SUCCESS;
 }