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