#include "playlist_internal.h"
#include "../libvlc.h"
+struct vlc_sd_internal_t
+{
+ /* the playlist items for category and onelevel */
+ playlist_item_t *p_cat;
+ playlist_item_t *p_one;
+ services_discovery_t *p_sd; /**< Loaded service discovery modules */
+ char *psz_name;
+};
+
+static void services_discovery_Destructor ( vlc_object_t *p_obj );
/*
* Services discovery
vlc_event_manager_register_event_type( &p_sd->event_manager,
vlc_ServicesDiscoveryEnded );
+ vlc_object_set_destructor( p_sd, services_discovery_Destructor );
vlc_object_attach( p_sd, p_super );
return p_sd;
p_sd->p_module = NULL;
}
+/***********************************************************************
+ * Destructor
+ ***********************************************************************/
+static void services_discovery_Destructor ( vlc_object_t *p_obj )
+{
+ services_discovery_t * p_sd = (services_discovery_t *)p_obj;
+ assert(!p_sd->p_module); /* Forgot to call Stop */
+ vlc_event_manager_fini( &p_sd->event_manager );
+}
+
/***********************************************************************
* GetLocalizedName
***********************************************************************/
}
/* Free in playlist_ServicesDiscoveryRemove */
- struct playlist_services_discovery_support_t * p_sds;
- p_sds = malloc( sizeof(struct playlist_services_discovery_support_t) );
+ vlc_sd_internal_t * p_sds = malloc( sizeof(*p_sds) );
if( !p_sds )
{
vlc_sd_Destroy( p_sd );
const char *psz_name )
{
playlist_private_t *priv = pl_priv( p_playlist );
- struct playlist_services_discovery_support_t * p_sds = NULL;
+ vlc_sd_internal_t * p_sds = NULL;
PL_LOCK;
for( int i = 0; i < priv->i_sds; i++ )