From: Laurent Aimar Date: Sat, 23 Aug 2008 14:51:39 +0000 (+0200) Subject: Properly handle input state in InputSourceInit. X-Git-Tag: 0.9.0~81 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=9715ca4796dc57bf2747d2123dc64934325ba427;p=vlc Properly handle input state in InputSourceInit. --- diff --git a/src/input/input.c b/src/input/input.c index 971284bcf0..71e6547c0d 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -2070,6 +2070,8 @@ static int InputSourceInit( input_thread_t *p_input, input_source_t *in, const char *psz_mrl, const char *psz_forced_demux ) { + const bool b_master = in == &p_input->p->input; + char psz_dup[strlen (psz_mrl) + 1]; const char *psz_access; const char *psz_demux; @@ -2190,7 +2192,8 @@ static int InputSourceInit( input_thread_t *p_input, { int64_t i_pts_delay; - input_ChangeState( p_input, OPENING_S ); + if( b_master ) + input_ChangeState( p_input, OPENING_S ); /* Now try a real access */ in->p_access = access_New( p_input, psz_access, psz_demux, psz_path ); @@ -2268,7 +2271,8 @@ static int InputSourceInit( input_thread_t *p_input, var_Set( p_input, "seekable", val ); } - input_ChangeState( p_input, BUFFERING_S ); + if( b_master ) + input_ChangeState( p_input, BUFFERING_S ); /* Create the stream_t */ in->p_stream = stream_AccessNew( in->p_access, p_input->b_preparsing ); @@ -2360,7 +2364,8 @@ static int InputSourceInit( input_thread_t *p_input, return VLC_SUCCESS; error: - input_ChangeState( p_input, ERROR_S ); + if( b_master ) + input_ChangeState( p_input, ERROR_S ); if( in->p_demux ) demux_Delete( in->p_demux );