diff options
Diffstat (limited to '')
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/output_thread.c | 10 |
2 files changed, 11 insertions, 0 deletions
@@ -1,4 +1,5 @@ ver 0.15.13 (2010/??/??) +* output_thread: fix race condition after CANCEL command ver 0.15.12 (2010/07/20) 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 |