Commit 3fe7ae53 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

When the underlying access dies, suicide the stream

parent dcd84049
...@@ -1872,6 +1872,8 @@ static int AReadStream( stream_t *s, void *p_read, int i_read ) ...@@ -1872,6 +1872,8 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
if( !p_sys->i_list ) if( !p_sys->i_list )
{ {
i_read = p_access->pf_read( p_access, p_read, i_read ); i_read = p_access->pf_read( p_access, p_read, i_read );
if( p_access->b_die )
vlc_object_kill( s );
if( p_input ) if( p_input )
{ {
vlc_mutex_lock( &p_input->p->counters.counters_lock ); vlc_mutex_lock( &p_input->p->counters.counters_lock );
...@@ -1887,6 +1889,8 @@ static int AReadStream( stream_t *s, void *p_read, int i_read ) ...@@ -1887,6 +1889,8 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
i_read = p_sys->p_list_access->pf_read( p_sys->p_list_access, p_read, i_read = p_sys->p_list_access->pf_read( p_sys->p_list_access, p_read,
i_read ); i_read );
if( p_access->b_die )
vlc_object_kill( s );
/* If we reached an EOF then switch to the next stream in the list */ /* If we reached an EOF then switch to the next stream in the list */
if( i_read == 0 && p_sys->i_list_index + 1 < p_sys->i_list ) if( i_read == 0 && p_sys->i_list_index + 1 < p_sys->i_list )
...@@ -1938,6 +1942,8 @@ static block_t *AReadBlock( stream_t *s, bool *pb_eof ) ...@@ -1938,6 +1942,8 @@ static block_t *AReadBlock( stream_t *s, bool *pb_eof )
if( !p_sys->i_list ) if( !p_sys->i_list )
{ {
p_block = p_access->pf_block( p_access ); p_block = p_access->pf_block( p_access );
if( p_access->b_die )
vlc_object_kill( s );
if( pb_eof ) *pb_eof = p_access->info.b_eof; if( pb_eof ) *pb_eof = p_access->info.b_eof;
if( p_input && p_block && libvlc_stats (p_access) ) if( p_input && p_block && libvlc_stats (p_access) )
{ {
...@@ -1953,6 +1959,8 @@ static block_t *AReadBlock( stream_t *s, bool *pb_eof ) ...@@ -1953,6 +1959,8 @@ static block_t *AReadBlock( stream_t *s, bool *pb_eof )
} }
p_block = p_sys->p_list_access->pf_block( p_access ); p_block = p_sys->p_list_access->pf_block( p_access );
if( p_access->b_die )
vlc_object_kill( s );
b_eof = p_sys->p_list_access->info.b_eof; b_eof = p_sys->p_list_access->info.b_eof;
if( pb_eof ) *pb_eof = b_eof; if( pb_eof ) *pb_eof = b_eof;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment