diff options
Diffstat (limited to 'src/OutputThread.cxx')
-rw-r--r-- | src/OutputThread.cxx | 10 |
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); + } } } |