From 207786ffb1d6eba4f40daf981dbeb45745459425 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 26 Mar 2009 23:40:50 +0100 Subject: [PATCH] output_all: synchronize playback with player_control.notify This patch fixes a longer delay when moving around songs in the playlist. The main thread wants to enqueue a new "next" song into the player thread, but the player thread is waiting inside audio_output_all_wait() for the output threads. Use player_control.notify there, so audio_output_all_wait() gets woken up by the main thread, too. --- src/output_all.c | 3 ++- src/output_thread.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/output_all.c b/src/output_all.c index 23d46b5f4..0cf0e924b 100644 --- a/src/output_all.c +++ b/src/output_all.c @@ -24,6 +24,7 @@ #include "conf.h" #include "pipe.h" #include "buffer.h" +#include "player_control.h" #ifndef NDEBUG #include "chunk.h" @@ -414,7 +415,7 @@ audio_output_all_wait(unsigned threshold) if (audio_output_all_check() < threshold) return true; - notify_wait(&audio_output_client_notify); + notify_wait(&pc.notify); return audio_output_all_check() < threshold; } diff --git a/src/output_thread.c b/src/output_thread.c index b545a62be..acedd863e 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -22,6 +22,7 @@ #include "output_internal.h" #include "chunk.h" #include "pipe.h" +#include "player_control.h" #include @@ -156,7 +157,7 @@ static void ao_play(struct audio_output *ao) ao->chunk_finished = true; g_mutex_unlock(ao->mutex); - notify_signal(&audio_output_client_notify); + notify_signal(&pc.notify); } static void ao_pause(struct audio_output *ao)