From d1742a2330af968c8ca453855ad0604f4998428b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 2 Nov 2009 17:01:17 +0100 Subject: output_thread: check command before g_cond_wait() After CANCEL, call g_cond_wait() only if the new command is still NONE. Problem is that ao_command_finished() has to unlock the audio_output object, and in the meantime, the player thread might have submitted a new command. --- src/output_thread.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/output_thread.c b/src/output_thread.c index da1caef3..502599cb 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -455,7 +455,8 @@ static gpointer audio_output_task(gpointer arg) /* the player thread will now clear our music pipe - wait for a notify, to give it some time */ - g_cond_wait(ao->cond, ao->mutex); + if (ao->command == AO_COMMAND_NONE) + g_cond_wait(ao->cond, ao->mutex); continue; case AO_COMMAND_KILL: -- cgit v1.2.3