aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_thread.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/output_thread.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/output_thread.c b/src/output_thread.c
index 770b377e8..e652eae57 100644
--- a/src/output_thread.c
+++ b/src/output_thread.c
@@ -268,6 +268,16 @@ static gpointer audio_output_task(gpointer arg)
ao->chunk = NULL;
if (ao->open)
ao_plugin_cancel(ao->plugin, ao->data);
+
+ /* we must clear the notification now, because
+ the notify_wait() call below must wait
+ until audio_output_all_cancel() has cleared
+ the pipe; if another notification happens
+ to be still pending, we get a race
+ condition with a crash or an assertion
+ failure */
+ notify_clear(&ao->notify);
+
ao_command_finished(ao);
/* the player thread will now clear our music