From 1f6bca40b3b60c3f4df259c2983d1e6be32ff4be Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 26 Feb 2013 16:31:52 -0800 Subject: [PATCH] Check to make sure we can connect to PulseAudio before we use it. --- src/audio/pulseaudio/SDL_pulseaudio.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/audio/pulseaudio/SDL_pulseaudio.c b/src/audio/pulseaudio/SDL_pulseaudio.c index 2d3897546..b5479861a 100644 --- a/src/audio/pulseaudio/SDL_pulseaudio.c +++ b/src/audio/pulseaudio/SDL_pulseaudio.c @@ -205,6 +205,27 @@ load_pulseaudio_syms(void) } +/* Check to see if we can connect to PulseAudio */ +static SDL_bool +CheckPulseAudioAvailable() +{ + pa_simple *s; + pa_sample_spec ss; + + ss.format = PA_SAMPLE_S16NE; + ss.channels = 1; + ss.rate = 22050; + + s = PULSEAUDIO_pa_simple_new(NULL, "SDL", PA_STREAM_PLAYBACK, NULL, + "Test", &ss, NULL, NULL, NULL); + if (s) { + PULSEAUDIO_pa_simple_free(s); + return SDL_TRUE; + } else { + return SDL_FALSE; + } +} + /* This function waits until it is possible to write a full sound buffer */ static void PULSEAUDIO_WaitDevice(_THIS) @@ -476,7 +497,6 @@ PULSEAUDIO_Deinitialize(void) UnloadPulseAudioLibrary(); } - static int PULSEAUDIO_Init(SDL_AudioDriverImpl * impl) { @@ -484,6 +504,10 @@ PULSEAUDIO_Init(SDL_AudioDriverImpl * impl) return 0; } + if (!CheckPulseAudioAvailable()) { + return 0; + } + /* Set the function pointers */ impl->OpenDevice = PULSEAUDIO_OpenDevice; impl->PlayDevice = PULSEAUDIO_PlayDevice;