/************************************************************************** * libvlc_media_list_remove_index (Public) * * Lock should be held when entering. **************************************************************************/ int libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist, int index ) { if( !mlist_is_writable(p_mlist) ) return -1; return libvlc_media_list_internal_remove_index( p_mlist, index ); }
/************************************************************************** * services_discovery_removeall (Private) (VLC event callback) **************************************************************************/ static void services_discovery_removeall( const vlc_event_t * p_event, void * user_data ) { VLC_UNUSED(p_event); libvlc_media_discoverer_t * p_mdis = user_data; libvlc_media_list_lock( p_mdis->p_mlist ); for( int i = 0; i < libvlc_media_list_count( p_mdis->p_mlist ); i++ ) { libvlc_media_list_internal_remove_index( p_mdis->p_mlist, i ); } libvlc_media_list_unlock( p_mdis->p_mlist ); }
static void services_discovery_item_removed( const vlc_event_t * p_event, void * user_data ) { input_item_t * p_item = p_event->u.services_discovery_item_added.p_new_item; libvlc_media_t * p_md; libvlc_media_discoverer_t * p_mdis = user_data; int i, count = libvlc_media_list_count( p_mdis->p_mlist ); libvlc_media_list_lock( p_mdis->p_mlist ); for( i = 0; i < count; i++ ) { p_md = libvlc_media_list_item_at_index( p_mdis->p_mlist, i ); if( p_md->p_input_item == p_item ) { libvlc_media_list_internal_remove_index( p_mdis->p_mlist, i ); break; } } libvlc_media_list_unlock( p_mdis->p_mlist ); }
static void services_discovery_item_removed( services_discovery_t *sd, input_item_t *p_item ) { libvlc_media_t * p_md; libvlc_media_discoverer_t *p_mdis = sd->owner.sys; int i, count = libvlc_media_list_count( p_mdis->p_mlist ); libvlc_media_list_lock( p_mdis->p_mlist ); for( i = 0; i < count; i++ ) { p_md = libvlc_media_list_item_at_index( p_mdis->p_mlist, i ); assert(p_md != NULL); if( p_md->p_input_item == p_item ) { libvlc_media_list_internal_remove_index( p_mdis->p_mlist, i ); libvlc_media_release( p_md ); break; } libvlc_media_release( p_md ); } libvlc_media_list_unlock( p_mdis->p_mlist ); }