]> git.sesse.net Git - vlc/blobdiff - src/control/media_discoverer.c
Support for QAM modulation on ATSC
[vlc] / src / control / media_discoverer.c
index e96e295fd77dc447dd5009450cbbf3fa3751727f..a00ba7676470e2bff4210ae6fe01437049a42f6b 100644 (file)
@@ -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;
 }
-