decoder/Thread: move decoder_command_finished_locked() to DecoderControl
This commit is contained in:
parent
f081696f62
commit
6507993972
@ -350,6 +350,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.
|
||||
*
|
||||
|
@ -44,22 +44,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
|
||||
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user