Commit e944e404c07cb2e6ed5d0902231cd2c8c8f95a8f

Sam Lantinga 2021-03-22T19:16:13

Merge commit 'e7e519a466167b7a3ef9aa9b28535e436139936a' into main

diff --git a/src/audio/dsp/SDL_dspaudio.c b/src/audio/dsp/SDL_dspaudio.c
index 1622c6f..2124dcc 100644
--- a/src/audio/dsp/SDL_dspaudio.c
+++ b/src/audio/dsp/SDL_dspaudio.c
@@ -292,9 +292,24 @@ DSP_FlushCapture(_THIS)
     }
 }
 
+static SDL_bool InitTimeDevicesExist = SDL_FALSE;
+static int
+look_for_devices_test(int fd)
+{
+    InitTimeDevicesExist = SDL_TRUE;  /* note that _something_ exists. */
+    /* Don't add to the device list, we're just seeing if any devices exist. */
+    return 0;
+}
+
 static int
 DSP_Init(SDL_AudioDriverImpl * impl)
 {
+    InitTimeDevicesExist = SDL_FALSE;
+    SDL_EnumUnixAudioDevices(0, look_for_devices_test);
+    if (!InitTimeDevicesExist) {
+        return 0;  /* maybe try a different backend. */
+    }
+
     /* Set the function pointers */
     impl->DetectDevices = DSP_DetectDevices;
     impl->OpenDevice = DSP_OpenDevice;