aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/player/Control.hxx6
-rw-r--r--src/player/Thread.cxx16
2 files changed, 10 insertions, 12 deletions
diff --git a/src/player/Control.hxx b/src/player/Control.hxx
index 2b15e89d8..ae4465ca6 100644
--- a/src/player/Control.hxx
+++ b/src/player/Control.hxx
@@ -263,6 +263,12 @@ struct PlayerControl {
ClientSignal();
}
+ void LockCommandFinished() {
+ Lock();
+ CommandFinished();
+ Unlock();
+ }
+
private:
/**
* Wait for the command to be finished by the player thread.
diff --git a/src/player/Thread.cxx b/src/player/Thread.cxx
index 5673f4867..3c315ebcf 100644
--- a/src/player/Thread.cxx
+++ b/src/player/Thread.cxx
@@ -310,14 +310,6 @@ public:
void Run();
};
-static void
-player_command_finished(PlayerControl &pc)
-{
- pc.Lock();
- pc.CommandFinished();
- pc.Unlock();
-}
-
void
Player::StartDecoder(MusicPipe &_pipe)
{
@@ -581,7 +573,7 @@ Player::SeekDecoder()
while (decoder_starting) {
if (!CheckDecoderStartup()) {
/* decoder failure */
- player_command_finished(pc);
+ pc.LockCommandFinished();
return false;
}
}
@@ -597,13 +589,13 @@ Player::SeekDecoder()
if (!dc.Seek(where + start_time)) {
/* decoder failure */
- player_command_finished(pc);
+ pc.LockCommandFinished();
return false;
}
elapsed_time = where;
- player_command_finished(pc);
+ pc.LockCommandFinished();
assert(xfade_state == CrossFadeState::UNKNOWN);
@@ -1190,7 +1182,7 @@ player_task(void *arg)
pc.outputs.Close();
- player_command_finished(pc);
+ pc.LockCommandFinished();
return;
case PlayerCommand::CANCEL: