Commit 1af6b527 authored by Laurent Aimar's avatar Laurent Aimar

Correctly unpause the vout for reuse.

It fixes an assert in vout code when a stream was stopped while paused.
parent 0b3f034f
...@@ -339,6 +339,7 @@ void input_DecoderDelete( decoder_t *p_dec ) ...@@ -339,6 +339,7 @@ void input_DecoderDelete( decoder_t *p_dec )
/* Make sure we aren't paused/buffering/waiting anymore */ /* Make sure we aren't paused/buffering/waiting anymore */
vlc_mutex_lock( &p_owner->lock ); vlc_mutex_lock( &p_owner->lock );
const b_was_paused = p_owner->b_paused;
p_owner->b_paused = false; p_owner->b_paused = false;
p_owner->b_buffering = false; p_owner->b_buffering = false;
p_owner->b_flushing = true; p_owner->b_flushing = true;
...@@ -346,6 +347,8 @@ void input_DecoderDelete( decoder_t *p_dec ) ...@@ -346,6 +347,8 @@ void input_DecoderDelete( decoder_t *p_dec )
vlc_mutex_unlock( &p_owner->lock ); vlc_mutex_unlock( &p_owner->lock );
vlc_thread_join( p_dec ); vlc_thread_join( p_dec );
p_owner->b_paused = b_was_paused;
module_unneed( p_dec, p_dec->p_module ); module_unneed( p_dec, p_dec->p_module );
/* */ /* */
...@@ -2020,8 +2023,11 @@ static void DeleteDecoder( decoder_t * p_dec ) ...@@ -2020,8 +2023,11 @@ static void DeleteDecoder( decoder_t * p_dec )
} }
if( p_owner->p_vout ) if( p_owner->p_vout )
{ {
/* Hack to make sure all the the pictures are freed by the decoder */ /* Hack to make sure all the the pictures are freed by the decoder
* and that the vout is not paused anymore */
vout_FixLeaks( p_owner->p_vout, true ); vout_FixLeaks( p_owner->p_vout, true );
if( p_owner->b_paused )
vout_ChangePause( p_owner->p_vout, false, mdate() );
/* */ /* */
input_ressource_RequestVout( p_owner->p_input->p->p_ressource, p_owner->p_vout, NULL ); input_ressource_RequestVout( p_owner->p_input->p->p_ressource, p_owner->p_vout, NULL );
......
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