player/Thread: move mutex lock out of SeekDecoder()

This commit is contained in:
Max Kellermann
2017-12-22 01:05:48 +01:00
parent 5bd1fbb0d6
commit 3b2b5edd26

View File

@@ -274,7 +274,7 @@ private:
/** /**
* This is the handler for the #PlayerCommand::SEEK command. * This is the handler for the #PlayerCommand::SEEK command.
* *
* The player lock is not held. * Caller must lock the mutex.
* *
* @return false if the decoder has failed * @return false if the decoder has failed
*/ */
@@ -613,9 +613,10 @@ Player::SeekDecoder() noexcept
{ {
assert(pc.next_song != nullptr); assert(pc.next_song != nullptr);
pc.outputs.Cancel(); {
const ScopeUnlock unlock(pc.mutex);
const std::lock_guard<Mutex> lock(pc.mutex); pc.outputs.Cancel();
}
if (!dc.IsCurrentSong(*pc.next_song)) { if (!dc.IsCurrentSong(*pc.next_song)) {
/* the decoder is already decoding the "next" song - /* the decoder is already decoding the "next" song -
@@ -717,10 +718,7 @@ Player::ProcessCommand() noexcept
break; break;
case PlayerCommand::SEEK: case PlayerCommand::SEEK:
{ SeekDecoder();
const ScopeUnlock unlock(pc.mutex);
SeekDecoder();
}
break; break;
case PlayerCommand::CANCEL: case PlayerCommand::CANCEL: