diff --git a/NEWS b/NEWS index 73fcfa4e7..6eda2de03 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ ver 0.21.9 (not yet released) * Android - fix crash on ARMv7 - request storage permission on Android 6+ +* fix spurious "single" mode bug ver 0.21.8 (2019/04/23) * input 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 */