summaryrefslogtreecommitdiff
path: root/src/player/Thread.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/player/Thread.cxx')
-rw-r--r--src/player/Thread.cxx10
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 */