]> git.sesse.net Git - vlc/blobdiff - modules/services_discovery/upnp_cc.cpp
Remove useless <sys/stat.h> includes
[vlc] / modules / services_discovery / upnp_cc.cpp
index ac9a77c0929fd9e9f8d2a7651c36d5d009c7724e..5d4463c4b25265644ff34a5999e445a38c1f4786 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Authors: RĂ©mi Denis-Courmont <rem # videolan.org>
  *
- * Based on original wxWindows patch for VLC, and dependant on CyberLink
+ * Based on original wxWindows patch for VLC, and dependent on CyberLink
  * UPnP library from :
  *          Satoshi Konno <skonno@cybergarage.org>
  *
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include <vlc_playlist.h>
+#include <vlc_services_discovery.h>
 
 /* FIXME: thread-safety ?? */
 /* FIXME: playlist locking */
@@ -56,45 +58,20 @@ using namespace CyberLink;
     static int  Open ( vlc_object_t * );
     static void Close( vlc_object_t * );
 
-vlc_module_begin();
-    set_shortname( "UPnP");
-    set_description( _("Universal Plug'n'Play discovery") );
-    set_category( CAT_PLAYLIST );
-    set_subcategory( SUBCAT_PLAYLIST_SD );
+VLC_SD_PROBE_HELPER("upnp", N_("Universal Plug'n'Play discovery"))
 
-    set_capability( "services_discovery", 0 );
-    set_callbacks( Open, Close );
+vlc_module_begin ()
+    set_shortname( "UPnP")
+    set_description( N_("Universal Plug'n'Play discovery") )
+    set_category( CAT_PLAYLIST )
+    set_subcategory( SUBCAT_PLAYLIST_SD )
 
-vlc_module_end();
+    set_capability( "services_discovery", 0 )
+    set_callbacks( Open, Close )
 
-/*****************************************************************************
- * Local prototypes
- *****************************************************************************/
-
-/* Main functions */
-    static void Run    ( services_discovery_t *p_sd );
-
-/*****************************************************************************
- * Open: initialize and create stuff
- *****************************************************************************/
-static int Open( vlc_object_t *p_this )
-{
-    services_discovery_t *p_sd = ( services_discovery_t* )p_this;
-
-    p_sd->pf_run = Run;
-
-    services_discovery_SetLocalizedName( p_sd, _("Devices") );
-
-    return VLC_SUCCESS;
-}
+    VLC_SD_PROBE_SUBMODULE
 
-
-/*****************************************************************************
- * Close:
- *****************************************************************************/
-static void Close( vlc_object_t *p_this )
-{
-}
+vlc_module_end ()
 
 /*****************************************************************************
  * Run: main UPnP thread
@@ -144,24 +121,33 @@ class UPnPHandler : public MediaPlayer, public DeviceChangeListener,
             addSearchResponseListener( this );
             //addEventListener( this );
         }
-
 };
 
-static void Run( services_discovery_t *p_sd )
+/*****************************************************************************
+ * Open: initialize and create stuff
+ *****************************************************************************/
+static int Open( vlc_object_t *p_this )
 {
-    UPnPHandler u( p_sd );
+    services_discovery_t *p_sd = ( services_discovery_t* )p_this;
 
-    u.start();
+    UPnPHandler *u = new UPnPHandler( p_sd );
+    u->start( );
+    msg_Dbg( p_sd, "upnp discovery started" );
+    p_sd->p_private = u;
 
-    msg_Dbg( p_sd, "UPnP discovery started" );
-    /* read SAP packets */
-    while( !p_sd->b_die )
-    {
-        msleep( 500 );
-    }
+    return VLC_SUCCESS;
+}
+
+
+/*****************************************************************************
+ * Close:
+ *****************************************************************************/
+static void Close( vlc_object_t *p_this )
+{
+    UPnPHandler *u = (UPnPHandler *)p_this->p_private;
+    u->stop( );
 
-    u.stop();
-    msg_Dbg( p_sd, "UPnP discovery stopped" );
+    msg_Dbg( p_this, "upnp discovery started" );
 }
 
 
@@ -216,11 +202,12 @@ void UPnPHandler::AddContent( playlist_item_t *p_parent, ContentNode *node )
     if ( node->isItemNode() )
     {
         ItemNode *iNode = (ItemNode *)node;
-        input_item_t *p_input = input_ItemNew( p_sd, iNode->getResource(), title );
+        input_item_t *p_input = input_item_New( p_sd, iNode->getResource(), title );
         /* FIXME: playlist_AddInput() can fail */
         playlist_BothAddInput( p_playlist, p_input, p_parent,
                                PLAYLIST_APPEND, PLAYLIST_END, NULL, NULL,
                                false );
+        vlc_gc_decref( p_input );
     } else if ( node->isContainerNode() )
     {
         ContainerNode *conNode = (ContainerNode *)node;