struct services_discovery_t
{
VLC_COMMON_MEMBERS
- char * psz_module;
module_t * p_module;
vlc_event_manager_t event_manager; /* Accessed through Setters for non class function */
__services_discovery_GetServicesNames(VLC_OBJECT(a),b)
/* Creation of a service_discovery object */
-VLC_EXPORT( services_discovery_t *, services_discovery_Create, ( vlc_object_t * p_super, const char * psz_service_name ) );
-VLC_EXPORT( bool, services_discovery_Start, ( services_discovery_t * p_this ) );
-VLC_EXPORT( void, services_discovery_Stop, ( services_discovery_t * p_this ) );
+VLC_EXPORT( services_discovery_t *, vlc_sd_Create, ( vlc_object_t * ) );
+VLC_EXPORT( bool, vlc_sd_Start, ( services_discovery_t *, const char * ) );
+VLC_EXPORT( void, vlc_sd_Stop, ( services_discovery_t * ) );
-static inline void services_discovery_StopAndRelease( services_discovery_t * p_this )
+static inline void vlc_sd_Destroy( services_discovery_t *p_sd )
{
- services_discovery_Stop( p_this );
- vlc_object_release( p_this );
+ vlc_object_release( VLC_OBJECT(p_sd) );
+}
+
+static inline void vlc_sd_StopAndDestroy( services_discovery_t * p_this )
+{
+ vlc_sd_Stop( p_this );
+ vlc_sd_Destroy( p_this );
}
/* Read info from discovery object */
libvlc_event_manager_register_event_type( p_mdis->p_event_manager,
libvlc_MediaDiscovererEnded, NULL );
- p_mdis->p_sd = services_discovery_Create( (vlc_object_t*)p_inst->p_libvlc_int, psz_name );
+ p_mdis->p_sd = vlc_sd_Create( (vlc_object_t*)p_inst->p_libvlc_int );
if( !p_mdis->p_sd )
{
p_mdis );
/* Here we go */
- bool ret = services_discovery_Start( p_mdis->p_sd );
- if(!ret)
+ if( !vlc_sd_Start( p_mdis->p_sd, psz_name ) )
{
libvlc_media_list_release( p_mdis->p_mlist );
libvlc_exception_raise( p_e, "Can't start the services_discovery module named '%s'", psz_name );
int i;
libvlc_media_list_release( p_mdis->p_mlist );
- services_discovery_StopAndRelease( p_mdis->p_sd );
+ vlc_sd_StopAndDestroy( p_mdis->p_sd );
/* Free catname_to_submedialist and all the mlist */
char ** all_keys = vlc_dictionary_all_keys( &p_mdis->catname_to_submedialist );
/***********************************************************************
* Create
***********************************************************************/
-services_discovery_t *
-services_discovery_Create ( vlc_object_t * p_super, const char * psz_module_name )
+services_discovery_t *vlc_sd_Create( vlc_object_t *p_super )
{
services_discovery_t *p_sd;
- assert( psz_module_name );
+
p_sd = vlc_custom_create( p_super, sizeof( *p_sd ), VLC_OBJECT_GENERIC,
"services discovery" );
if( !p_sd )
return NULL;
- p_sd->psz_module = strdup( psz_module_name );
-
vlc_event_manager_init( &p_sd->event_manager, p_sd, (vlc_object_t *)p_sd );
vlc_event_manager_register_event_type( &p_sd->event_manager,
vlc_ServicesDiscoveryItemAdded );
/***********************************************************************
* Stop
***********************************************************************/
-bool services_discovery_Start ( services_discovery_t * p_sd )
+bool vlc_sd_Start ( services_discovery_t * p_sd, const char *module )
{
assert(!p_sd->p_module);
- p_sd->p_module = module_need( p_sd, "services_discovery", p_sd->psz_module, true );
+ p_sd->p_module = module_need( p_sd, "services_discovery", module, true );
if( p_sd->p_module == NULL )
{
/***********************************************************************
* Stop
***********************************************************************/
-void services_discovery_Stop ( services_discovery_t * p_sd )
+void vlc_sd_Stop ( services_discovery_t * p_sd )
{
vlc_event_t event = {
.type = vlc_ServicesDiscoveryEnded
assert(!p_sd->p_module); /* Forgot to call Stop */
vlc_event_manager_fini( &p_sd->event_manager );
- free( p_sd->psz_module );
vlc_object_release( p_sd );
}
vlc_object_unlock( p_parent->p_playlist );
}
-int playlist_ServicesDiscoveryAdd( playlist_t *p_playlist, const char *psz_modules )
+int playlist_ServicesDiscoveryAdd( playlist_t *p_playlist, const char *psz_modules )
{
const char *psz_parser = psz_modules ?: "";
int retval = VLC_SUCCESS;
msg_Dbg( p_playlist, "Add services_discovery %s", psz_plugin );
services_discovery_t *p_sd;
- p_sd = services_discovery_Create( (vlc_object_t*)p_playlist, psz_plugin );
+ p_sd = vlc_sd_Create( (vlc_object_t*)p_playlist );
if( !p_sd )
continue;
playlist_sd_item_removed,
p_cat );
- bool ret = services_discovery_Start( p_sd );
- if(!ret)
+ if( !vlc_sd_Start( p_sd, psz_plugin ) )
{
- vlc_object_release( p_sd );
+ vlc_sd_Destroy( p_sd );
return VLC_EGENERIC;
}
}
int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist,
- const char *psz_module )
+ const char *psz_module )
{
struct playlist_services_discovery_support_t * p_sds = NULL;
int i;
PL_LOCK;
for( i = 0 ; i< pl_priv(p_playlist)->i_sds ; i ++ )
{
- if( !strcmp( psz_module, pl_priv(p_playlist)->pp_sds[i]->p_sd->psz_module ) )
+ if( !strcmp( psz_module, module_get_object( pl_priv(p_playlist)->pp_sds[i]->p_sd->p_module ) ) )
{
p_sds = pl_priv(p_playlist)->pp_sds[i];
REMOVE_ELEM( pl_priv(p_playlist)->pp_sds, pl_priv(p_playlist)->i_sds, i );
}
PL_UNLOCK;
- services_discovery_StopAndRelease( p_sds->p_sd );
+ vlc_sd_StopAndDestroy( p_sds->p_sd );
free( p_sds );
return VLC_SUCCESS;
for( i = 0 ; i< pl_priv(p_playlist)->i_sds ; i ++ )
{
- if( !strcmp( psz_module, pl_priv(p_playlist)->pp_sds[i]->p_sd->psz_module ) )
+ if( !strcmp( psz_module, module_get_object( pl_priv(p_playlist)->pp_sds[i]->p_sd->p_module ) ) )
{
PL_UNLOCK;
return true;
{
while( pl_priv(p_playlist)->i_sds > 0 )
playlist_ServicesDiscoveryRemove( p_playlist,
- pl_priv(p_playlist)->pp_sds[0]->p_sd->psz_module );
+ module_get_object( pl_priv(p_playlist)->pp_sds[0]->p_sd->p_module ) );
}