]> git.sesse.net Git - vlc/blobdiff - src/playlist/engine.c
playlist: wait for preparser end from playlist thread.
[vlc] / src / playlist / engine.c
index 45b95cce9227e4c886f2a5dc59e293ea46c79c67..2aa85d18dde10f3621fdca36d3f598face43d327 100644 (file)
@@ -170,15 +170,11 @@ static void playlist_Destructor( vlc_object_t * p_this )
 
     if( p_playlist->p_preparse )
     {
-        vlc_object_kill( p_playlist->p_preparse );
-        vlc_thread_join( p_playlist->p_preparse );
         vlc_object_release( p_playlist->p_preparse );
     }
 
     if( p_playlist->p_fetcher )
     {
-        vlc_object_kill( p_playlist->p_fetcher );
-        vlc_thread_join( p_playlist->p_fetcher );
         vlc_object_release( p_playlist->p_fetcher );
     }
     msg_Dbg( p_this, "Destroyed" );
@@ -240,7 +236,6 @@ void playlist_release_current_input( playlist_t * p_playlist )
 
     /* Release the playlist lock, because we may get stuck
      * in vlc_object_release() for some time. */
-    printf("_______ releasing\n");
     PL_UNLOCK;
     vlc_object_release( p_input );
     PL_LOCK;
@@ -509,6 +504,11 @@ void playlist_LastLoop( playlist_t *p_playlist )
     playlist_ServicesDiscoveryKillAll( p_playlist );
     playlist_MLDump( p_playlist );
 
+    vlc_object_kill( p_playlist->p_preparse );
+    vlc_thread_join( p_playlist->p_preparse );
+    vlc_object_kill( p_playlist->p_fetcher );
+    vlc_thread_join( p_playlist->p_fetcher );
+
     PL_LOCK;
     FOREACH_ARRAY( playlist_item_t *p_del, p_playlist->all_items )
         free( p_del->pp_children );