continue;
input_Stop( p_input, true );
- vlc_thread_join( p_input );
- vlc_object_release( p_input );
+ input_Close( p_input );
p_sd->p_sys->pp_input[i] = NULL;
}
if( p_input->b_eof || p_input->b_error )
{
input_Stop( p_input, false );
- vlc_thread_join( p_input );
- vlc_object_release( p_input );
+ input_Close( p_input );
p_sd->p_sys->pp_input[i] = NULL;
REMOVE_ELEM( p_sys->pp_input, p_sys->i_input, i );
input_thread_t *p_input_thread = p_mi->input.p_thread;
if( !p_input_thread )
return;
+ p_mi->input.p_thread = NULL;
var_DelCallback( p_input_thread, "can-seek",
input_seekable_changed, p_mi );
/* We owned this one */
input_Stop( p_input_thread, b_input_abort );
-
- vlc_thread_join( p_input_thread );
-
- assert( p_input_thread->b_dead );
-
- p_mi->input.p_thread = NULL;
- vlc_object_release( p_input_thread );
+ input_Close( p_input_thread );
}
/*
&preparse );
input_Stop( p_input, true );
- vlc_thread_join( p_input );
- vlc_object_release( p_input );
+ input_Close( p_input );
vlc_sem_destroy( &sem_preparse );
}
free( psz_header );
if( p_input )
{
input_Stop( p_input, true );
- vlc_thread_join( p_input );
-
var_DelCallback( p_instance->p_input, "intf-event", InputEvent, p_media );
- vlc_object_release( p_input );
+ input_Close( p_input );
vlm_SendEventMediaInstanceStopped( p_vlm, id, p_media->cfg.psz_name );
}
input_Stop( p_input, true );
- vlc_thread_join( p_input );
-
var_DelCallback( p_instance->p_input, "intf-event", InputEvent, p_media );
- vlc_object_release( p_input );
+ input_Close( p_input );
if( !p_instance->b_sout_keep )
input_resource_TerminateSout( p_instance->p_input_resource );
PL_LOCK;
p_sys->p_input = NULL;
- vlc_thread_join( p_input );
- vlc_object_release( p_input );
+ input_Close( p_input );
UpdateActivity( p_playlist, -DEFAULT_INPUT_ACTIVITY );