/***********************************************************************
* 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 ) );
}