]> git.sesse.net Git - vlc/blobdiff - src/control/media_discoverer.c
services_discovery: Partially fix service discovery. We yet need to find a way to...
[vlc] / src / control / media_discoverer.c
index 1cad2c769d9f02d5686773068f7e1f4e9bd2179f..c1b811b0383c54b2aee07751ffc6d308f4f411f0 100644 (file)
@@ -179,6 +179,7 @@ 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 );
         return NULL;
     }
@@ -201,6 +202,14 @@ libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
                       p_mdis );
 
     /* Here we go */
+    bool ret = services_discovery_Start( p_mdis->p_sd );
+    if(!ret)
+    {
+        free( p_mdis );
+        libvlc_media_list_release( p_mdis->p_mlist );
+        libvlc_exception_raise( p_e, "Can't start the services_discovery module named '%s'", psz_name );
+        return NULL;
+    }
 
     return p_mdis;
 }
@@ -214,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 );