All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 4/4] pulse: call pa_threaded_mainloop_wait() to handle spurious wakeups
@ 2009-07-31 14:02 Lennart Poettering
  0 siblings, 0 replies; only message in thread
From: Lennart Poettering @ 2009-07-31 14:02 UTC (permalink / raw)
  To: ALSA Development Mailing List

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.
---
 pulse/pulse.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

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);
 
-- 
1.6.3.3



Lennart

-- 
Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2009-07-31 14:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-31 14:02 [PATCH 4/4] pulse: call pa_threaded_mainloop_wait() to handle spurious wakeups Lennart Poettering

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.