From: Lennart Poettering Date: Fri, 31 Jul 2009 14:02:21 +0000 (+0200) Subject: pulse: call pa_threaded_mainloop_wait() to handle spurious wakeups X-Git-Tag: v1.0.21~7 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=16f837ec71a254a6bff7d26faf55237c4df5749c;p=alsa-plugins.git pulse: call pa_threaded_mainloop_wait() to handle spurious wakeups pa_threaded_mainloop_wait() can wake up for no reason, according to the specs of the underlying POSIX ptrhead_cond_wait() docs, so we need to call it in a loop here which should be cleaner anyway. Signed-off-by: Takashi Iwai --- diff --git a/pulse/pulse.c b/pulse/pulse.c index ae66b0c..6f58a7e 100644 --- a/pulse/pulse.c +++ b/pulse/pulse.c @@ -262,10 +262,17 @@ int pulse_connect(snd_pulse_t * p, const char *server) if (err < 0) goto error; - pa_threaded_mainloop_wait(p->mainloop); + for (;;) { + pa_context_state_t state = pa_context_get_state(p->context); - if (pa_context_get_state(p->context) != PA_CONTEXT_READY) - goto error; + if (!PA_CONTEXT_IS_GOOD(state)) + goto error; + + if (state == PA_CONTEXT_READY) + break; + + pa_threaded_mainloop_wait(p->mainloop); + } pa_threaded_mainloop_unlock(p->mainloop);