Commit 65079939 authored by Max Kellermann's avatar Max Kellermann

decoder/Thread: move decoder_command_finished_locked() to DecoderControl

parent f081696f
......@@ -351,6 +351,20 @@ private:
public:
/**
* Marks the current command as "finished" and notifies the
* client (= player thread).
*
* To be called from the decoder thread. Caller must lock the
* mutex.
*/
void CommandFinishedLocked() {
assert(command != DecoderCommand::NONE);
command = DecoderCommand::NONE;
client_cond.signal();
}
/**
* Start the decoder.
*
* @param song the song to be decoded; the given instance will be
......
......@@ -45,22 +45,6 @@
static constexpr Domain decoder_thread_domain("decoder_thread");
/**
* Marks the current decoder command as "finished" and notifies the
* player thread.
*
* @param dc the #DecoderControl object; must be locked
*/
static void
decoder_command_finished_locked(DecoderControl &dc)
{
assert(dc.command != DecoderCommand::NONE);
dc.command = DecoderCommand::NONE;
dc.client_cond.signal();
}
/**
* Opens the input stream with InputStream::Open(), and waits until
* the stream gets ready. If a decoder STOP command is received
* during that, it cancels the operation (but does not close the
......@@ -382,8 +366,7 @@ decoder_run_song(DecoderControl &dc,
song.IsFile() ? new Tag(song.GetTag()) : nullptr);
dc.state = DecoderState::START;
decoder_command_finished_locked(dc);
dc.CommandFinishedLocked();
bool success;
{
......@@ -441,7 +424,7 @@ decoder_run(DecoderControl &dc)
path_buffer = AllocatedPath::FromUTF8(uri_utf8, dc.error);
if (path_buffer.IsNull()) {
dc.state = DecoderState::ERROR;
decoder_command_finished_locked(dc);
dc.CommandFinishedLocked();
return;
}
......@@ -487,7 +470,7 @@ decoder_task(void *arg)
break;
case DecoderCommand::STOP:
decoder_command_finished_locked(dc);
dc.CommandFinishedLocked();
break;
case DecoderCommand::NONE:
......
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