player/Thread: fix "single" mode race condition

If the decoder finishes decoding the current song between the two
IsIdle() checks, MPD stops playback instead of starting the decoder
for the next song.

This is usually not visible problem, because the main thread restarts
it via playlist::ResumePlayback(), but that way it, ignores "single"
mode.

As a workaround, this commit adds another "queued" check which
re-enters the player loop and checks again whether to start the
decoder.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/556
This commit is contained in:
Max Kellermann
2019-05-20 15:22:34 +02:00
parent ff3e2c0514
commit 923e66738c
2 changed files with 11 additions and 0 deletions

1
NEWS
View File

@@ -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