diff options
Diffstat (limited to '')
-rw-r--r-- | src/player/Control.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/player/Control.cxx b/src/player/Control.cxx index 2e90f7eef..830dd146d 100644 --- a/src/player/Control.cxx +++ b/src/player/Control.cxx @@ -220,13 +220,11 @@ PlayerControl::LockEnqueueSong(DetachedSong *song) Unlock(); } -bool -PlayerControl::LockSeek(DetachedSong *song, SongTime t) +void +PlayerControl::SeekLocked(DetachedSong *song, SongTime t) { assert(song != nullptr); - Lock(); - if (next_song != nullptr) SynchronousCommand(PlayerCommand::CANCEL); @@ -235,9 +233,18 @@ PlayerControl::LockSeek(DetachedSong *song, SongTime t) next_song = song; seek_time = t; SynchronousCommand(PlayerCommand::SEEK); - Unlock(); assert(next_song == nullptr); +} + +bool +PlayerControl::LockSeek(DetachedSong *song, SongTime t) +{ + assert(song != nullptr); + + Lock(); + SeekLocked(song, t); + Unlock(); idle_add(IDLE_PLAYER); |