X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fmedia_discoverer.c;h=a00ba7676470e2bff4210ae6fe01437049a42f6b;hb=5c96f1ca97f41550e06088e008459e525f67f724;hp=e96e295fd77dc447dd5009450cbbf3fa3751727f;hpb=0e463771bba51b4b3f1fba2f0274e5b3ccee6dc0;p=vlc diff --git a/src/control/media_discoverer.c b/src/control/media_discoverer.c index e96e295fd7..a00ba76764 100644 --- a/src/control/media_discoverer.c +++ b/src/control/media_discoverer.c @@ -62,7 +62,7 @@ static void services_discovery_item_added( const vlc_event_t * p_event, /* Insert the newly created mlist in our dictionary */ vlc_dictionary_insert( &p_mdis->catname_to_submedialist, psz_cat, p_mlist ); - + /* Insert the md into the root list */ libvlc_media_list_lock( p_mdis->p_mlist ); _libvlc_media_list_add_media( p_mdis->p_mlist, p_catmd, NULL ); @@ -113,7 +113,7 @@ static void services_discovery_item_removed( const vlc_event_t * p_event, static void services_discovery_started( const vlc_event_t * p_event, void * user_data ) { - (void)p_event; + VLC_UNUSED(p_event); libvlc_media_discoverer_t * p_mdis = user_data; libvlc_event_t event; p_mdis->running = true; @@ -128,7 +128,7 @@ static void services_discovery_started( const vlc_event_t * p_event, static void services_discovery_ended( const vlc_event_t * p_event, void * user_data ) { - (void)p_event; + VLC_UNUSED(p_event); libvlc_media_discoverer_t * p_mdis = user_data; libvlc_event_t event; p_mdis->running = false; @@ -151,7 +151,7 @@ libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst, libvlc_exception_t * p_e ) { libvlc_media_discoverer_t * p_mdis; - + p_mdis = malloc(sizeof(libvlc_media_discoverer_t)); if( !p_mdis ) { @@ -178,8 +178,9 @@ libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst, if( !p_mdis->p_sd ) { - free( p_mdis ); + libvlc_media_list_release( p_mdis->p_mlist ); libvlc_exception_raise( p_e, "Can't find the services_discovery module named '%s'", psz_name ); + free( p_mdis ); return NULL; } @@ -200,9 +201,15 @@ libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst, services_discovery_ended, p_mdis ); - services_discovery_Start( p_mdis->p_sd ); - /* Here we go */ + bool ret = services_discovery_Start( p_mdis->p_sd ); + if(!ret) + { + libvlc_media_list_release( p_mdis->p_mlist ); + libvlc_exception_raise( p_e, "Can't start the services_discovery module named '%s'", psz_name ); + free( p_mdis ); + return NULL; + } return p_mdis; } @@ -216,7 +223,7 @@ libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis ) int i; libvlc_media_list_release( p_mdis->p_mlist ); - services_discovery_Destroy( p_mdis->p_sd ); + services_discovery_StopAndRelease( p_mdis->p_sd ); /* Free catname_to_submedialist and all the mlist */ char ** all_keys = vlc_dictionary_all_keys( &p_mdis->catname_to_submedialist ); @@ -228,7 +235,7 @@ libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis ) } free( all_keys ); - vlc_dictionary_clear( &p_mdis->catname_to_submedialist ); + vlc_dictionary_clear( &p_mdis->catname_to_submedialist, NULL, NULL ); free( p_mdis ); } @@ -270,4 +277,3 @@ libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis ) { return p_mdis->running; } -