diff options
Diffstat (limited to 'src/player/Thread.cxx')
-rw-r--r-- | src/player/Thread.cxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/player/Thread.cxx b/src/player/Thread.cxx index 81271a142..7d81011f6 100644 --- a/src/player/Thread.cxx +++ b/src/player/Thread.cxx @@ -1058,6 +1058,16 @@ Player::Run() noexcept SongBorder(); } else if (dc.IsIdle()) { + if (queued) + /* the decoder has just stopped, + between the two IsIdle() checks, + probably while UnlockCheckOutputs() + left the mutex unlocked; to restart + the decoder instead of stopping + playback completely, let's re-enter + this loop */ + continue; + /* check the size of the pipe again, because the decoder thread may have added something since we last checked */ |