/***************************************************************************** * CapsChangeEmit: Emits the CapsChange signal *****************************************************************************/ int CapsChangeEmit( intf_thread_t * p_intf ) { if( p_intf->p_sys->b_dead ) return VLC_SUCCESS; CapsChangeSignal( p_intf->p_sys->p_conn, p_intf ); return VLC_SUCCESS; }
/***************************************************************************** * UpdateCaps: update p_sys->i_caps * This function have to be called with the playlist unlocked ****************************************************************************/ static int UpdateCaps( intf_thread_t* p_intf ) { intf_sys_t* p_sys = p_intf->p_sys; dbus_int32_t i_caps = CAPS_CAN_HAS_TRACKLIST; playlist_t* p_playlist = pl_Hold( p_intf ); PL_LOCK; if( p_playlist->current.i_size > 0 ) i_caps |= CAPS_CAN_PLAY | CAPS_CAN_GO_PREV | CAPS_CAN_GO_NEXT; PL_UNLOCK; input_thread_t* p_input = playlist_CurrentInput( p_playlist ); if( p_input ) { /* XXX: if UpdateCaps() is called too early, these are * unconditionnaly true */ if( var_GetBool( p_input, "can-pause" ) ) i_caps |= CAPS_CAN_PAUSE; if( var_GetBool( p_input, "can-seek" ) ) i_caps |= CAPS_CAN_SEEK; vlc_object_release( p_input ); } pl_Release( p_intf ); if( p_sys->b_meta_read ) i_caps |= CAPS_CAN_PROVIDE_METADATA; if( i_caps != p_intf->p_sys->i_caps ) { p_sys->i_caps = i_caps; CapsChangeSignal( p_intf->p_sys->p_conn, (vlc_object_t*)p_intf ); } return VLC_SUCCESS; }