aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-03-25 18:04:41 +0100
committerMax Kellermann <max@duempel.org>2009-03-25 18:04:41 +0100
commit3be1cdf8e0488a933371a6a45ced720d2aa67905 (patch)
tree7ad74a1150b56e544ed5fceb65184fd43f9b8578
parent933fcf42326972c93dfa840ef06e2639e16cc43d (diff)
downloadmpd-3be1cdf8e0488a933371a6a45ced720d2aa67905.tar.gz
mpd-3be1cdf8e0488a933371a6a45ced720d2aa67905.tar.xz
mpd-3be1cdf8e0488a933371a6a45ced720d2aa67905.zip
output_all: synchronize playback with a notify object
Use audio_output_client_notify instead of g_usleep(1ms) in audio_output_all_wait() to synchronize with the output_thread. Signal the audio_output_client_notify object in ao_play().
-rw-r--r--src/output_all.c3
-rw-r--r--src/output_thread.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/output_all.c b/src/output_all.c
index 870d8aed3..23d46b5f4 100644
--- a/src/output_all.c
+++ b/src/output_all.c
@@ -414,8 +414,7 @@ audio_output_all_wait(unsigned threshold)
if (audio_output_all_check() < threshold)
return true;
- /* XXX synchronize in a better way */
- g_usleep(1000);
+ notify_wait(&audio_output_client_notify);
return audio_output_all_check() < threshold;
}
diff --git a/src/output_thread.c b/src/output_thread.c
index 62b893074..b545a62be 100644
--- a/src/output_thread.c
+++ b/src/output_thread.c
@@ -155,6 +155,8 @@ static void ao_play(struct audio_output *ao)
ao->chunk_finished = true;
g_mutex_unlock(ao->mutex);
+
+ notify_signal(&audio_output_client_notify);
}
static void ao_pause(struct audio_output *ao)