X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fplaylist%2Fcontrol.c;h=1f10fb71d7dee518cb2638bd95c1d862c4decc81;hb=5f39f383534eb589db9860215430d8664df4cfcf;hp=f9260e072a92ba636e1ec6740abdb16ff1c38fd0;hpb=4ca1e354903dcaa4452ceda2378d3a56e228b28f;p=vlc diff --git a/src/playlist/control.c b/src/playlist/control.c index f9260e072a..1f10fb71d7 100644 --- a/src/playlist/control.c +++ b/src/playlist/control.c @@ -68,17 +68,17 @@ void __pl_Release( vlc_object_t *p_this ) void playlist_Lock( playlist_t *pl ) { - vlc_object_lock( pl ); + vlc_mutex_lock( &pl_priv(pl)->lock ); } void playlist_Unlock( playlist_t *pl ) { - vlc_object_unlock( pl ); + vlc_mutex_unlock( &pl_priv(pl)->lock ); } void playlist_AssertLocked( playlist_t *pl ) { - vlc_object_assert_locked( pl ); + vlc_assert_locked( &pl_priv(pl)->lock ); } int playlist_Control( playlist_t * p_playlist, int i_query, @@ -98,14 +98,13 @@ int playlist_Control( playlist_t * p_playlist, int i_query, static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args ) { playlist_item_t *p_item, *p_node; - vlc_value_t val; PL_ASSERT_LOCKED; if( !vlc_object_alive( p_playlist ) ) return VLC_EGENERIC; - if( playlist_IsEmpty( p_playlist ) ) + if( playlist_IsEmpty( p_playlist ) && i_query != PLAYLIST_STOP ) return VLC_EGENERIC; switch( i_query ) @@ -138,8 +137,7 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args case PLAYLIST_PLAY: if( pl_priv(p_playlist)->p_input ) { - val.i_int = PLAYING_S; - var_Set( pl_priv(p_playlist)->p_input, "state", val ); + var_SetInteger( pl_priv(p_playlist)->p_input, "state", PLAYING_S ); break; } else @@ -153,27 +151,21 @@ static int PlaylistVAControl( playlist_t * p_playlist, int i_query, va_list args break; case PLAYLIST_PAUSE: - val.i_int = 0; - if( pl_priv(p_playlist)->p_input ) - var_Get( pl_priv(p_playlist)->p_input, "state", &val ); + if( !pl_priv(p_playlist)->p_input ) + { /* FIXME: is this really useful without input? */ + pl_priv(p_playlist)->status.i_status = PLAYLIST_PAUSED; + break; + } - if( val.i_int == PAUSE_S ) + if( var_GetInteger( pl_priv(p_playlist)->p_input, "state" ) == PAUSE_S ) { pl_priv(p_playlist)->status.i_status = PLAYLIST_RUNNING; - if( pl_priv(p_playlist)->p_input ) - { - val.i_int = PLAYING_S; - var_Set( pl_priv(p_playlist)->p_input, "state", val ); - } + var_SetInteger( pl_priv(p_playlist)->p_input, "state", PLAYING_S ); } else { pl_priv(p_playlist)->status.i_status = PLAYLIST_PAUSED; - if( pl_priv(p_playlist)->p_input ) - { - val.i_int = PAUSE_S; - var_Set( pl_priv(p_playlist)->p_input, "state", val ); - } + var_SetInteger( pl_priv(p_playlist)->p_input, "state", PAUSE_S ); } break;