aboutsummaryrefslogtreecommitdiffstats
path: root/src/OutputThread.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/OutputThread.cxx')
-rw-r--r--src/OutputThread.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/OutputThread.cxx b/src/OutputThread.cxx
index c6f2e4d30..30d3ba30f 100644
--- a/src/OutputThread.cxx
+++ b/src/OutputThread.cxx
@@ -510,6 +510,9 @@ ao_play(struct audio_output *ao)
ao->chunk_finished = false;
+ assert(!ao->in_playback_loop);
+ ao->in_playback_loop = true;
+
while (chunk != nullptr && ao->command == AO_COMMAND_NONE) {
assert(!ao->chunk_finished);
@@ -525,6 +528,9 @@ ao_play(struct audio_output *ao)
chunk = chunk->next;
}
+ assert(ao->in_playback_loop);
+ ao->in_playback_loop = false;
+
ao->chunk_finished = true;
ao->mutex.unlock();
@@ -656,8 +662,10 @@ audio_output_task(void *arg)
chunks in the pipe */
continue;
- if (ao->command == AO_COMMAND_NONE)
+ if (ao->command == AO_COMMAND_NONE) {
+ ao->woken_for_play = false;
ao->cond.wait(ao->mutex);
+ }
}
}