X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fplaylist%2Fthread.c;h=33f2861ec6eeb9cb2276f1a62023271e628ca15c;hb=848489c3863b1b7ddbe542aa3e746063722b9280;hp=5208ca81c9b134ddae775912f2ca757383ce1a84;hpb=2cc99c5cbbd3de7f5ad677539af1b5c29dc8defe;p=vlc diff --git a/src/playlist/thread.c b/src/playlist/thread.c index 5208ca81c9..33f2861ec6 100644 --- a/src/playlist/thread.c +++ b/src/playlist/thread.c @@ -25,7 +25,7 @@ # include "config.h" #endif -#include +#include #include #include #include @@ -59,8 +59,10 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) if( !p_playlist ) return; // Preparse - p_playlist->p_preparse = vlc_object_create( p_playlist, - sizeof( playlist_preparse_t ) ); + static const char ppname[] = "preparser"; + p_playlist->p_preparse = + vlc_custom_create( p_playlist, sizeof( playlist_preparse_t ), + VLC_OBJECT_GENERIC, ppname ); if( !p_playlist->p_preparse ) { msg_Err( p_playlist, "unable to create preparser" ); @@ -83,8 +85,10 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) } // Secondary Preparse - p_playlist->p_fetcher = vlc_object_create( p_playlist, - sizeof( playlist_fetcher_t ) ); + static const char fname[] = "fetcher"; + p_playlist->p_fetcher = + vlc_custom_create( p_playlist, sizeof( playlist_fetcher_t ), + VLC_OBJECT_GENERIC, fname ); if( !p_playlist->p_fetcher ) { msg_Err( p_playlist, "unable to create secondary preparser" ); @@ -125,19 +129,6 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) return; } -/** - * Destroy the playlist global thread. - * - * Deinits all things controlled by the playlist global thread - * \param p_playlist the playlist thread to destroy - * \return VLC_SUCCESS or an error - */ -int playlist_ThreadDestroy( playlist_t * p_playlist ) -{ - playlist_Destroy( p_playlist ); - return VLC_SUCCESS; -} - /** * Run the main control thread itself */ @@ -149,9 +140,7 @@ static void RunControlThread ( playlist_t *p_playlist ) vlc_object_lock( p_playlist ); while( vlc_object_alive( p_playlist ) ) { - PL_UNLOCK; playlist_MainLoop( p_playlist ); - PL_LOCK; /* The playlist lock has been unlocked, so we can't tell if * someone has killed us in the meantime. Check now. */ @@ -161,9 +150,11 @@ static void RunControlThread ( playlist_t *p_playlist ) if( p_playlist->b_cant_sleep ) { /* 100 ms is an acceptable delay for playlist operations */ - PL_UNLOCK; + vlc_object_unlock( p_playlist ); + msleep( INTF_IDLE_SLEEP*2 ); - PL_LOCK; + + vlc_object_lock( p_playlist ); } else { @@ -196,10 +187,12 @@ static void PreparseDestructor( vlc_object_t * p_this ) { playlist_preparse_t * p_preparse = (playlist_preparse_t *)p_this; free( p_preparse->pp_waiting ); + msg_Dbg( p_this, "Destroyed" ); } static void FetcherDestructor( vlc_object_t * p_this ) { playlist_fetcher_t * p_fetcher = (playlist_fetcher_t *)p_this; free( p_fetcher->pp_waiting ); + msg_Dbg( p_this, "Destroyed" ); }