summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libao2/ao_pulse.c7
-rw-r--r--libao2/audio_out.c2
-rw-r--r--libao2/audio_out.h1
3 files changed, 8 insertions, 2 deletions
diff --git a/libao2/ao_pulse.c b/libao2/ao_pulse.c
index e48c402fa6..062dde9ecf 100644
--- a/libao2/ao_pulse.c
+++ b/libao2/ao_pulse.c
@@ -297,8 +297,11 @@ unlock_and_fail:
pa_threaded_mainloop_unlock(priv->mainloop);
fail:
- if (priv->context)
- GENERIC_ERR_MSG(priv->context, "Init failed");
+ if (priv->context) {
+ if (!(pa_context_errno(priv->context) == PA_ERR_CONNECTIONREFUSED
+ && ao->probing))
+ GENERIC_ERR_MSG(priv->context, "Init failed");
+ }
free(devarg);
uninit(ao, true);
return -1;
diff --git a/libao2/audio_out.c b/libao2/audio_out.c
index 6836963d66..744bcaf9bd 100644
--- a/libao2/audio_out.c
+++ b/libao2/audio_out.c
@@ -167,7 +167,9 @@ void ao_init(struct ao *ao, char **ao_list)
for (int i = 0; audio_out_drivers[i]; i++) {
const struct ao_driver *audio_out = audio_out_drivers[i];
ao->driver = audio_out;
+ ao->probing = true;
if (audio_out->init(ao, NULL) >= 0) {
+ ao->probing = false;
ao->initialized = true;
ao->driver = audio_out;
return;
diff --git a/libao2/audio_out.h b/libao2/audio_out.h
index 955376d460..316341752b 100644
--- a/libao2/audio_out.h
+++ b/libao2/audio_out.h
@@ -100,6 +100,7 @@ struct ao {
double pts;
struct bstr buffer;
int buffer_playable_size;
+ bool probing;
bool initialized;
bool untimed;
bool no_persistent_volume;