]> git.sesse.net Git - vlc/commitdiff
No need to lock the playlist for meta fetch and preparsing
authorRémi Denis-Courmont <remi@remlab.net>
Tue, 9 Feb 2010 17:08:13 +0000 (19:08 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Tue, 9 Feb 2010 19:14:26 +0000 (21:14 +0200)
The previous fix made the fetcher and preparser persistent throughout
the lifetime of the playlist. So we don't need to protect the pointers
anymore. Also, they are internally thread-safe (with their own lock).

include/vlc_playlist.h
modules/gui/macosx/playlist.m
modules/gui/macosx/playlistinfo.m
modules/gui/qt4/input_manager.cpp
src/control/media.c
src/playlist/control.c
src/playlist/item.c
src/playlist/thread.c

index 233c73134057288d680e2ce742f164688dee5a59..6854b9fb47d2cde0143f884a70b321e074f7cd20 100644 (file)
@@ -300,10 +300,10 @@ VLC_EXPORT( input_thread_t *, playlist_CurrentInput, ( playlist_t *p_playlist )
 VLC_EXPORT( void,  playlist_Clear, ( playlist_t *, bool ) );
 
 /** Enqueue an input item for preparsing */
-VLC_EXPORT( int, playlist_PreparseEnqueue, (playlist_t *, input_item_t *, bool b_locked ) );
+VLC_EXPORT( int, playlist_PreparseEnqueue, (playlist_t *, input_item_t * ) );
 
 /** Request the art for an input item to be fetched */
-VLC_EXPORT( int, playlist_AskForArtEnqueue, (playlist_t *, input_item_t *, bool b_locked ) );
+VLC_EXPORT( int, playlist_AskForArtEnqueue, (playlist_t *, input_item_t * ) );
 
 /* Playlist sorting */
 VLC_EXPORT( int,  playlist_TreeMove, ( playlist_t *, playlist_item_t *, playlist_item_t *, int ) );
index 2d10202e5ed8f6fedbbc9ccbc351aa1f3f844fca..515205ec7d231a8d9332d74621cb65d7685b7ab3 100644 (file)
         {
             if( p_item->i_children == -1 )
             {
-                playlist_PreparseEnqueue( p_playlist, p_item->p_input, pl_Unlocked );
+                playlist_PreparseEnqueue( p_playlist, p_item->p_input );
             }
             else
             {
 
         if( p_item && p_item->i_children == -1 )
         {
-            playlist_AskForArtEnqueue( p_playlist, p_item->p_input, pl_Unlocked );
+            playlist_AskForArtEnqueue( p_playlist, p_item->p_input );
         }
     }
     pl_Release( p_intf );
index 1ec680b197708bd47f45738c3120d45149ac7c4d..07e53b2c640a79dc93d2e118b6b032f93643cc6b 100644 (file)
@@ -253,7 +253,7 @@ static VLCInfo *_o_sharedInstance = nil;
         if( !input_item_IsPreparsed( p_item ) )
         {
             playlist_t * p_playlist = pl_Hold( VLCIntf );
-            playlist_PreparseEnqueue( p_playlist, p_item, pl_Unlocked );
+            playlist_PreparseEnqueue( p_playlist, p_item );
             pl_Release( VLCIntf );
         }
 
@@ -404,7 +404,7 @@ error:
 - (IBAction)downloadCoverArt:(id)sender
 {
     playlist_t * p_playlist = pl_Hold( VLCIntf );
-    if( p_item) playlist_AskForArtEnqueue( p_playlist, p_item, pl_Unlocked );
+    if( p_item) playlist_AskForArtEnqueue( p_playlist, p_item );
     pl_Release( VLCIntf );
 }
 
index ecf55e413e4b1e3eed391393fd84c213819f4a95..756b77324dc0f8bb41e3f4c2d530a8bdf5d09b06 100644 (file)
@@ -595,7 +595,7 @@ void InputManager::requestArtUpdate()
     if( hasInput() )
     {
         playlist_t *p_playlist = pl_Hold( p_intf );
-        playlist_AskForArtEnqueue( p_playlist, input_GetItem( p_input ), pl_Unlocked );
+        playlist_AskForArtEnqueue( p_playlist, input_GetItem( p_input ) );
         pl_Release( p_intf );
     }
     else
index 2da4e60319f38157bb8fd6912bebb76ba244c3a9..0b6147ef0680cc8f07598530c70dd54d41585072 100644 (file)
@@ -228,7 +228,7 @@ static void preparse_if_needed( libvlc_media_t *p_md )
     {
         playlist_PreparseEnqueue(
                 libvlc_priv (p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
-                p_md->p_input_item, pl_Unlocked );
+                p_md->p_input_item );
         p_md->b_preparsed = true;
     }
 }
@@ -447,7 +447,7 @@ char *libvlc_media_get_meta( libvlc_media_t *p_md, libvlc_meta_t e_meta )
         p_md->has_asked_art = true;
         playlist_AskForArtEnqueue(
                 libvlc_priv(p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
-                p_md->p_input_item, pl_Unlocked );
+                p_md->p_input_item );
     }
 
     /* Should be integrated in core */
index 3ee0f5e06b727aaf8fe52d19b3b2c183fb858c46..b8684166d03fbd54c630fd2ce8aaddee2109a1a8 100644 (file)
@@ -216,28 +216,22 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args
  * Preparse control
  *****************************************************************************/
 /** Enqueue an item for preparsing */
-int playlist_PreparseEnqueue( playlist_t *p_playlist,
-                              input_item_t *p_item, bool b_locked )
+int playlist_PreparseEnqueue( playlist_t *p_playlist, input_item_t *p_item )
 {
     playlist_private_t *p_sys = pl_priv(p_playlist);
 
-    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, bool b_locked )
+int playlist_AskForArtEnqueue( playlist_t *p_playlist, input_item_t *p_item )
 {
     playlist_private_t *p_sys = pl_priv(p_playlist);
 
-    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;
 }
index 1c705a3dc7618a978fbe4f2946ebdf2db7575ae6..6d971f246ece4919291da55381d7f27ef4c1668c 100644 (file)
@@ -726,7 +726,7 @@ static void GoAndPreparse( playlist_t *p_playlist, int i_mode,
         input_item_IsPreparsed( p_item->p_input ) == false &&
             ( EMPTY_STR( psz_artist ) || ( EMPTY_STR( psz_album ) ) )
           )
-        playlist_PreparseEnqueue( p_playlist, p_item->p_input, pl_Locked );
+        playlist_PreparseEnqueue( p_playlist, p_item->p_input );
     free( psz_artist );
     free( psz_album );
 }
index ee29e32bc35e9c61069db42a75700ec70a2c0253..25292e60d929a3ab8e7f5325300dfd6570139779 100644 (file)
@@ -271,7 +271,7 @@ static int PlayItem( playlist_t *p_playlist, playlist_item_t *p_item )
         if( !b_has_art || strncmp( psz_arturl, "attachment://", 13 ) )
         {
             PL_DEBUG( "requesting art for %s", psz_name );
-            playlist_AskForArtEnqueue( p_playlist, p_input, pl_Locked );
+            playlist_AskForArtEnqueue( p_playlist, p_input );
         }
         free( psz_arturl );
         free( psz_name );