player/Thread: call OnPlayerSync() in SeekDecoder()
This fixes a spurious "single" mode bug which occurs when using "play" or "seek" to start playback on the song that is currently paused: in that case, the main thread never queues the next song, and at the end of the song, the player thread exits Run(), stopping playback, and after that, the main thread starts the next song without considering "single" mode. By calling OnPlayerSync(), we ensure that the main thread gets a chance to queue the next song before the player thread exits the Run() loop. Closes https://github.com/MusicPlayerDaemon/MPD/issues/850
This commit is contained in:
parent
e29c06b718
commit
32f4f15831
1
NEWS
1
NEWS
@ -12,6 +12,7 @@ ver 0.21.26 (not yet released)
|
|||||||
- ffmpeg: remove "rtsp://" from the list of supported protocols
|
- ffmpeg: remove "rtsp://" from the list of supported protocols
|
||||||
- ffmpeg: add "hls+http://" to the list of supported protocols
|
- ffmpeg: add "hls+http://" to the list of supported protocols
|
||||||
- sndfile: fix lost samples at end of file
|
- sndfile: fix lost samples at end of file
|
||||||
|
* fix "single" mode bug after resuming playback
|
||||||
* the default log_level is "default", not "info"
|
* the default log_level is "default", not "info"
|
||||||
|
|
||||||
ver 0.21.25 (2020/07/06)
|
ver 0.21.25 (2020/07/06)
|
||||||
|
@ -681,6 +681,12 @@ Player::SeekDecoder() noexcept
|
|||||||
/* re-fill the buffer after seeking */
|
/* re-fill the buffer after seeking */
|
||||||
buffering = true;
|
buffering = true;
|
||||||
|
|
||||||
|
{
|
||||||
|
/* call syncPlaylistWithQueue() in the main thread */
|
||||||
|
const ScopeUnlock unlock(pc.mutex);
|
||||||
|
pc.listener.OnPlayerSync();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user