[vlc-devel] [PATCH] decoder: don't flush if already flushed
Ludovic Fauvet
etix at videolan.org
Tue Nov 10 10:43:03 CET 2015
On Mon, Nov 9, 2015, at 18:55, Thomas Guillem wrote:
> This commit fixes the following assert in the DecoderThread function:
> "assert( vlc_fifo_IsEmpty( p_owner->p_fifo) );"
>
> Indeed, if input_DecoderFlush is called again (just after),
> p_owner->flushed
> will be true and the input won't wait for the DecoderThread. As a
> consequence,
> the input will send blocks while the DecoderThread is flushing, hence the
> assert.
> ---
> src/input/decoder.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/src/input/decoder.c b/src/input/decoder.c
> index 8da034a..cacf7f2 100644
> --- a/src/input/decoder.c
> +++ b/src/input/decoder.c
> @@ -1873,6 +1873,14 @@ void input_DecoderFlush( decoder_t *p_dec )
> decoder_owner_sys_t *p_owner = p_dec->p_owner;
>
> vlc_fifo_Lock( p_owner->p_fifo );
> +
> + /* Don't flush if already flushed */
> + if( p_owner->flushed )
> + {
> + vlc_fifo_Unlock( p_owner->p_fifo );
> + return;
> + }
> +
> /* Empty the fifo */
> block_ChainRelease( vlc_fifo_DequeueAllUnlocked( p_owner->p_fifo )
> );
> p_owner->flushing = true;
> --
> 2.1.4
Acked-by me.
--
Ludovic Fauvet
www.videolan.org
More information about the vlc-devel
mailing list