aboutsummaryrefslogtreecommitdiffstats
path: root/src/DecoderControl.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/DecoderControl.hxx')
-rw-r--r--src/DecoderControl.hxx14
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 ||