- if( vlc_thread_create( p_sd, "services_discovery", RunSD,
- VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) )
- {
- msg_Err( p_sd, "cannot create services discovery thread" );
- vlc_object_destroy( p_sd );
- return VLC_EGENERIC;
+ if( *psz_parser == '\0' )
+ break;
+ fprintf(stderr,"Add %s\n", psz_parser);
+ /* Perform the addition */
+ {
+ services_discovery_t *p_sd = vlc_object_create( p_playlist,
+ VLC_OBJECT_SD );
+ p_sd->pf_run = NULL;
+ p_sd->p_module = module_Need( p_sd, "services_discovery", psz_parser, 0 );
+
+ if( p_sd->p_module == NULL )
+ {
+ msg_Err( p_playlist, "no suitable services discovery module" );
+ vlc_object_destroy( p_sd );
+ return VLC_EGENERIC;
+ }
+ p_sd->psz_module = strdup( psz_parser );
+ p_sd->b_die = VLC_FALSE;
+
+ PL_LOCK;
+ TAB_APPEND( p_playlist->i_sds, p_playlist->pp_sds, p_sd );
+ PL_UNLOCK;
+
+ if( !p_sd->pf_run ) {
+ psz_parser = psz_next;
+ continue;
+ }
+
+ if( vlc_thread_create( p_sd, "services_discovery", RunSD,
+ VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) )
+ {
+ msg_Err( p_sd, "cannot create services discovery thread" );
+ vlc_object_destroy( p_sd );
+ return VLC_EGENERIC;
+ }
+ }
+ psz_parser = psz_next;
+ }