]> git.sesse.net Git - vlc/blobdiff - modules/services_discovery/upnp_intel.cpp
Include vlc_plugin.h as needed
[vlc] / modules / services_discovery / upnp_intel.cpp
index 63a4c97d94ebdec0263a42a1aff20f8409e42bc2..9a44fac65cc323a8341a067a947f8af5550525ca 100644 (file)
@@ -43,6 +43,7 @@
 #endif
 
 #include <vlc/vlc.h>
+#include <vlc_plugin.h>
 #include <vlc_playlist.h>
 
 
@@ -50,6 +51,7 @@
 
 struct services_discovery_sys_t
 {
+    playlist_t *p_playlist;
     playlist_item_t *p_node_cat;
     playlist_item_t *p_node_one;
 };
@@ -86,7 +88,7 @@ public:
 
     Lockable( Cookie* c )
     {
-    vlc_mutex_init( c->serviceDiscovery, &_mutex );
+    vlc_mutex_init( &_mutex );
     }
 
     ~Lockable()
@@ -254,6 +256,10 @@ private:
 static int Open( vlc_object_t* );
 static void Close( vlc_object_t* );
 static void Run( services_discovery_t *p_sd );
+static playlist_t *pl_Get( service_discovery_t *p_sd )
+{
+    return p_sd->p_sys->p_playlist;
+}
 
 // Module descriptor
 
@@ -286,6 +292,7 @@ static int Open( vlc_object_t *p_this )
 
     p_sd->pf_run = Run;
     p_sd->p_sys = p_sys;
+    p_sys->p_playlist = pl_Yield( p_sd );
 
     /* Create our playlist node */
     playlist_NodesPairCreate( pl_Get( p_sd ), _("Devices"),
@@ -304,7 +311,7 @@ static void Close( vlc_object_t *p_this )
                          true );
     playlist_NodeDelete( pl_Get( p_sd ), p_sys->p_node_cat, true,
                          true );
-
+    pl_Release( p_intf );
     free( p_sys );
 }
 
@@ -875,6 +882,7 @@ void MediaServer::_buildPlaylist( Container* parent )
         playlist_BothAddInput( p_playlist, p_input, parentNode,
                                PLAYLIST_APPEND, PLAYLIST_END, &i_cat, NULL,
                                false );
+        vlc_gc_decref( p_input );
         /* TODO: do this better by storing ids */
         playlist_item_t *p_node = playlist_ItemGetById( p_playlist, i_cat, false );
         assert( p_node );