Commit efd60633 authored by Max Kellermann's avatar Max Kellermann

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.
parent 74a2813d
...@@ -353,9 +353,6 @@ flac_decode_internal(struct decoder * decoder, ...@@ -353,9 +353,6 @@ flac_decode_internal(struct decoder * decoder,
} else } else
cmd = decoder_get_command(decoder); cmd = decoder_get_command(decoder);
if (!flac_process_single(flac_dec))
break;
if (cmd == DECODE_COMMAND_SEEK) { if (cmd == DECODE_COMMAND_SEEK) {
FLAC__uint64 seek_sample = decoder_seek_where(decoder) * FLAC__uint64 seek_sample = decoder_seek_where(decoder) *
data.audio_format.sample_rate + 0.5; data.audio_format.sample_rate + 0.5;
...@@ -368,6 +365,12 @@ flac_decode_internal(struct decoder * decoder, ...@@ -368,6 +365,12 @@ flac_decode_internal(struct decoder * decoder,
decoder_seek_error(decoder); decoder_seek_error(decoder);
} else if (flac_get_state(flac_dec) == flac_decoder_eof) } else if (flac_get_state(flac_dec) == flac_decoder_eof)
break; break;
if (!flac_process_single(flac_dec)) {
cmd = decoder_get_command(decoder);
if (cmd != DECODE_COMMAND_SEEK)
break;
}
} }
if (cmd != DECODE_COMMAND_STOP) { if (cmd != DECODE_COMMAND_STOP) {
flacPrintErroredState(flac_get_state(flac_dec)); flacPrintErroredState(flac_get_state(flac_dec));
......
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