diff options
Diffstat (limited to 'src/DecoderControl.hxx')
-rw-r--r-- | src/DecoderControl.hxx | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/DecoderControl.hxx b/src/DecoderControl.hxx index 23cb394ca..863398dca 100644 --- a/src/DecoderControl.hxx +++ b/src/DecoderControl.hxx @@ -97,6 +97,14 @@ struct DecoderControl { Error error; bool quit; + + /** + * Is the client currently waiting for the DecoderThread? If + * false, the DecoderThread may omit invoking Cond::signal(), + * reducing the number of system calls. + */ + bool client_is_waiting; + bool seek_error; bool seekable; double seek_where; @@ -193,10 +201,10 @@ struct DecoderControl { * Waits for a signal from the decoder thread. This object * must be locked prior to calling this function. This method * is only valid in the player thread. + * + * Caller must hold the lock. */ - void WaitForDecoder() { - client_cond.wait(mutex); - } + void WaitForDecoder(); bool IsIdle() const { return state == DecoderState::STOP || |