X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fplaylist%2Fcontrol.c;h=38ddf485646668a97440732351a857bd6b2a64f0;hb=350b1052769f273c46b29d1ba60e2caa9c925ecb;hp=3faa47293dd827cf268b578e93bde7f8a9270b7d;hpb=c029b7afbe9dd9f0f2be5347021f7776d896b73b;p=vlc diff --git a/src/playlist/control.c b/src/playlist/control.c index 3faa47293d..38ddf48564 100644 --- a/src/playlist/control.c +++ b/src/playlist/control.c @@ -41,8 +41,8 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args static vlc_mutex_t global_lock = VLC_STATIC_MUTEX; -#undef pl_Hold -playlist_t *pl_Hold (vlc_object_t *obj) +#undef pl_Get +playlist_t *pl_Get (vlc_object_t *obj) { playlist_t *pl; libvlc_int_t *p_libvlc = obj->p_libvlc; @@ -56,34 +56,20 @@ playlist_t *pl_Hold (vlc_object_t *obj) playlist_Activate (pl); libvlc_priv (p_libvlc)->playlist_active = true; } - - /* The playlist should hold itself with vlc_object_hold() if ever. */ - assert (VLC_OBJECT (pl) != obj); - if (pl) - vlc_object_hold (pl); vlc_mutex_unlock (&global_lock); return pl; } -#undef pl_Release -void pl_Release( vlc_object_t *p_this ) -{ - playlist_t *pl = libvlc_priv (p_this->p_libvlc)->p_playlist; - assert( pl != NULL ); - - /* The rule is that pl_Release() should act on - the same object than pl_Hold() */ - assert( VLC_OBJECT(pl) != p_this); - - vlc_object_release( pl ); -} - void pl_Deactivate (libvlc_int_t *p_libvlc) { + bool deactivate; + vlc_mutex_lock (&global_lock); - if (libvlc_priv (p_libvlc)->playlist_active) - playlist_Deactivate (libvlc_priv (p_libvlc)->p_playlist); + deactivate = libvlc_priv (p_libvlc)->playlist_active; vlc_mutex_unlock (&global_lock); + + if (deactivate) + playlist_Deactivate (libvlc_priv (p_libvlc)->p_playlist); } void playlist_Lock( playlist_t *pl ) @@ -212,28 +198,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; }