File 0004-pulse-Set-PA_CONTEXT_NOAUTOSPAWN-when-fallback-is-av.patch of Package alsa-plugins

From 440e79153ffd3b38ba5494f92c7ba7767cd590b3 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Wed, 27 Jul 2011 09:32:12 +0200
Subject: [PATCH] pulse: Set PA_CONTEXT_NOAUTOSPAWN when fallback is available

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 pulse/ctl_pulse.c |    2 +-
 pulse/pcm_pulse.c |    2 +-
 pulse/pulse.c     |   12 +++++++++---
 pulse/pulse.h     |    2 +-
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/pulse/ctl_pulse.c b/pulse/ctl_pulse.c
index 8b5ff9e..242b77d 100644
--- a/pulse/ctl_pulse.c
+++ b/pulse/ctl_pulse.c
@@ -712,7 +712,7 @@ SND_CTL_PLUGIN_DEFINE_FUNC(pulse)
 		goto error;
 	}
 
-	err = pulse_connect(ctl->p, server, !fallback_name);
+	err = pulse_connect(ctl->p, server, fallback_name != NULL);
 	if (err < 0)
 		goto error;
 
diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c
index 15b29e0..d6c6792 100644
--- a/pulse/pcm_pulse.c
+++ b/pulse/pcm_pulse.c
@@ -1052,7 +1052,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(pulse)
 
 	pcm->handle_underrun = handle_underrun;
 
-	err = pulse_connect(pcm->p, server, !fallback_name);
+	err = pulse_connect(pcm->p, server, fallback_name != NULL);
 	if (err < 0)
 		goto error;
 
diff --git a/pulse/pulse.c b/pulse/pulse.c
index 6d9613d..c34671b 100644
--- a/pulse/pulse.c
+++ b/pulse/pulse.c
@@ -188,13 +188,19 @@ void pulse_free(snd_pulse_t * p)
 	free(p);
 }
 
-int pulse_connect(snd_pulse_t * p, const char *server, int show_error)
+int pulse_connect(snd_pulse_t * p, const char *server, int can_fallback)
 {
 	int err;
+	pa_context_flags_t flags;
 	pa_context_state_t state;
 
 	assert(p);
 
+	if (can_fallback)
+		flags = PA_CONTEXT_NOAUTOSPAWN;
+	else
+		flags = 0;
+
 	if (!p->context || !p->mainloop)
 		return -EBADFD;
 
@@ -204,7 +210,7 @@ int pulse_connect(snd_pulse_t * p, const char *server, int show_error)
 
 	pa_threaded_mainloop_lock(p->mainloop);
 
-	err = pa_context_connect(p->context, server, 0, NULL);
+	err = pa_context_connect(p->context, server, flags, NULL);
 	if (err < 0)
 		goto error;
 
@@ -225,7 +231,7 @@ int pulse_connect(snd_pulse_t * p, const char *server, int show_error)
 	return 0;
 
       error:
-	if (show_error)
+	if (!can_fallback)
 		SNDERR("PulseAudio: Unable to connect: %s\n",
 		       pa_strerror(pa_context_errno(p->context)));
 
diff --git a/pulse/pulse.h b/pulse/pulse.h
index 9f32a7f..9b337bc 100644
--- a/pulse/pulse.h
+++ b/pulse/pulse.h
@@ -42,7 +42,7 @@ int pulse_wait_operation(snd_pulse_t * p, pa_operation * o);
 snd_pulse_t *pulse_new(void);
 void pulse_free(snd_pulse_t * p);
 
-int pulse_connect(snd_pulse_t * p, const char *server, int show_error);
+int pulse_connect(snd_pulse_t * p, const char *server, int can_fallback);
 
 void pulse_poll_activate(snd_pulse_t * p);
 void pulse_poll_deactivate(snd_pulse_t * p);
-- 
1.7.6

openSUSE Build Service is sponsored by