From efd606337e7ee4ca2ee017b0197c9245d8fd333d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 5 Mar 2009 18:20:41 +0100 Subject: flac: check command after flac_process_single() failure When the MPD core sends the decoder a command while flac_process_single() is executed, this function fails. Abort the decoder only if not seeking. This fixes a seeking bug. --- src/decoder/flac_plugin.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/decoder') diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index ec9495fd..4308f025 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -353,9 +353,6 @@ flac_decode_internal(struct decoder * decoder, } else cmd = decoder_get_command(decoder); - if (!flac_process_single(flac_dec)) - break; - if (cmd == DECODE_COMMAND_SEEK) { FLAC__uint64 seek_sample = decoder_seek_where(decoder) * data.audio_format.sample_rate + 0.5; @@ -368,6 +365,12 @@ flac_decode_internal(struct decoder * decoder, decoder_seek_error(decoder); } else if (flac_get_state(flac_dec) == flac_decoder_eof) break; + + if (!flac_process_single(flac_dec)) { + cmd = decoder_get_command(decoder); + if (cmd != DECODE_COMMAND_SEEK) + break; + } } if (cmd != DECODE_COMMAND_STOP) { flacPrintErroredState(flac_get_state(flac_dec)); -- cgit v1.2.3