/************************************************************************** * release (Public) **************************************************************************/ void libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis ) { int i; vlc_event_detach( services_discovery_EventManager( p_mdis->p_sd ), vlc_ServicesDiscoveryItemAdded, services_discovery_item_added, p_mdis ); vlc_event_detach( services_discovery_EventManager( p_mdis->p_sd ), vlc_ServicesDiscoveryItemRemoved, services_discovery_item_removed, p_mdis ); vlc_event_detach( services_discovery_EventManager( p_mdis->p_sd ), vlc_ServicesDiscoveryStarted, services_discovery_started, p_mdis ); vlc_event_detach( services_discovery_EventManager( p_mdis->p_sd ), vlc_ServicesDiscoveryEnded, services_discovery_ended, p_mdis ); vlc_event_detach( services_discovery_EventManager( p_mdis->p_sd ), vlc_ServicesDiscoveryItemRemoveAll, services_discovery_removeall, p_mdis ); libvlc_media_list_release( p_mdis->p_mlist ); if( p_mdis->running ) vlc_sd_Stop( p_mdis->p_sd ); vlc_sd_Destroy( p_mdis->p_sd ); /* Free catname_to_submedialist and all the mlist */ char ** all_keys = vlc_dictionary_all_keys( &p_mdis->catname_to_submedialist ); for( i = 0; all_keys[i]; i++ ) { libvlc_media_list_t * p_catmlist = vlc_dictionary_value_for_key( &p_mdis->catname_to_submedialist, all_keys[i] ); libvlc_media_list_release( p_catmlist ); free( all_keys[i] ); } free( all_keys ); vlc_dictionary_clear( &p_mdis->catname_to_submedialist, NULL, NULL ); libvlc_event_manager_release( p_mdis->p_event_manager ); libvlc_release( p_mdis->p_libvlc_instance ); free( p_mdis ); }
/************************************************************************** * stop (Public) **************************************************************************/ LIBVLC_API void libvlc_media_discoverer_stop( libvlc_media_discoverer_t * p_mdis ) { libvlc_media_list_t * p_mlist = p_mdis->p_mlist; libvlc_media_list_lock( p_mlist ); libvlc_media_list_internal_end_reached( p_mlist ); libvlc_media_list_unlock( p_mlist ); libvlc_event_t event; event.type = libvlc_MediaDiscovererEnded; libvlc_event_send( &p_mdis->event_manager, &event ); vlc_sd_Destroy( p_mdis->p_sd ); p_mdis->p_sd = NULL; }