diff options
author | Max Kellermann <max@duempel.org> | 2016-07-06 15:37:11 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2016-07-06 15:46:04 +0200 |
commit | 6f59d71e0767a3fb84ff9b63555082938c7f4402 (patch) | |
tree | 74b5ccbc52254746b2a2bfebae2b95a17e091fc6 | |
parent | f9130f42a2c49d4436cc0f2c6803fd2b31861486 (diff) |
decoder/API: check initial_seek_running in _check_cancel_read()
The "seeking" flag is not set for the initial seek, and so
decoder_read() could be canceled when another SEEK was emitted during
initial seek.
This fixes several seek problems, for example the one reported for the
FLAC decoder plugin:
https://bugs.musicpd.org/view.php?id=4552
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/decoder/DecoderAPI.cxx | 3 |
2 files changed, 3 insertions, 1 deletions
@@ -1,6 +1,7 @@ ver 0.19.17 (not yet released) * decoder - flac: fix assertion failure while seeking + - fix seek problems in several plugins * fix spurious seek error "Failed to allocate silence buffer" * replay gain: fix "replay_gain_handler mixer" setting * DSD: use 0x69 as silence pattern diff --git a/src/decoder/DecoderAPI.cxx b/src/decoder/DecoderAPI.cxx index 941d3a70d..d7c9bc7ee 100644 --- a/src/decoder/DecoderAPI.cxx +++ b/src/decoder/DecoderAPI.cxx @@ -301,7 +301,8 @@ decoder_check_cancel_read(const Decoder *decoder) /* ignore the SEEK command during initialization, the plugin should handle that after it has initialized successfully */ if (dc.command == DecoderCommand::SEEK && - (dc.state == DecoderState::START || decoder->seeking)) + (dc.state == DecoderState::START || decoder->seeking || + decoder->initial_seek_running)) return false; return true; |