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;