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.
This commit is contained in:
Max Kellermann 2009-11-02 17:01:17 +01:00
parent 5555d30bbd
commit d1742a2330

View File

@ -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: