Commit 0717f16a authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

plqylist: Delete current playing item, if qpplicable, inside the PL_LOCK, and at the very end.

parent 7e063c47
...@@ -482,6 +482,18 @@ void playlist_LastLoop( playlist_t *p_playlist ) ...@@ -482,6 +482,18 @@ void playlist_LastLoop( playlist_t *p_playlist )
sout_DeleteInstance( p_sout ); sout_DeleteInstance( p_sout );
#endif #endif
/* Core should have terminated all SDs before the playlist */
/* TODO: It fails to do so when not playing anything -- Courmisch */
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;
if( p_playlist->status.p_node && if( p_playlist->status.p_node &&
p_playlist->status.p_node->i_flags & PLAYLIST_REMOVE_FLAG ) p_playlist->status.p_node->i_flags & PLAYLIST_REMOVE_FLAG )
{ {
...@@ -499,17 +511,6 @@ void playlist_LastLoop( playlist_t *p_playlist ) ...@@ -499,17 +511,6 @@ void playlist_LastLoop( playlist_t *p_playlist )
p_playlist->status.p_item = NULL; p_playlist->status.p_item = NULL;
} }
/* Core should have terminated all SDs before the playlist */
/* TODO: It fails to do so when not playing anything -- Courmisch */
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 ) FOREACH_ARRAY( playlist_item_t *p_del, p_playlist->all_items )
free( p_del->pp_children ); free( p_del->pp_children );
vlc_gc_decref( p_del->p_input ); vlc_gc_decref( p_del->p_input );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment