Commit 30cad0c5 authored by Max Kellermann's avatar Max Kellermann

player/Thread: move code to WaitDecoderStartup()

parent 3a387643
...@@ -203,6 +203,25 @@ private: ...@@ -203,6 +203,25 @@ private:
bool CheckDecoderStartup(); bool CheckDecoderStartup();
/** /**
* Call CheckDecoderStartup() repeatedly until the decoder has
* finished startup. Returns false on decoder error (and
* finishes the #PlayerCommand).
*
* This method does not check for commands. It is only
* allowed to be used while a command is being handled.
*/
bool WaitDecoderStartup() {
while (decoder_starting) {
if (!CheckDecoderStartup()) {
pc.LockCommandFinished();
return false;
}
}
return true;
}
/**
* Stop the decoder and clears (and frees) its music pipe. * Stop the decoder and clears (and frees) its music pipe.
* *
* Player lock is not held. * Player lock is not held.
...@@ -570,13 +589,8 @@ Player::SeekDecoder() ...@@ -570,13 +589,8 @@ Player::SeekDecoder()
/* wait for the decoder to complete initialization */ /* wait for the decoder to complete initialization */
while (decoder_starting) { if (!WaitDecoderStartup())
if (!CheckDecoderStartup()) {
/* decoder failure */
pc.LockCommandFinished();
return false; return false;
}
}
/* send the SEEK command */ /* send the SEEK command */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment