From 4c11307a4e75fbfde0d8ace6b19d612d2973bf0b Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 8 Jan 2024 13:38:29 -0800
Subject: [PATCH] Only initialize audio drivers that have been requested
If testautomation is running with only a specific audio driver enabled, we shouldn't try to open other ones, as they might fail.
Fixes https://github.com/libsdl-org/SDL/issues/8797
---
test/testautomation_audio.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/test/testautomation_audio.c b/test/testautomation_audio.c
index bd586314f954..0e75e19d9102 100644
--- a/test/testautomation_audio.c
+++ b/test/testautomation_audio.c
@@ -83,6 +83,7 @@ int audio_initQuitAudio()
int result;
int i, iMax;
const char *audioDriver;
+ const char *hint = SDL_GetHint(SDL_HINT_AUDIODRIVER);
/* Stop SDL audio subsystem */
SDL_QuitSubSystem(SDL_INIT_AUDIO);
@@ -98,6 +99,10 @@ int audio_initQuitAudio()
SDLTest_Assert(audioDriver != NULL, "Audio driver name is not NULL");
SDLTest_AssertCheck(audioDriver[0] != '\0', "Audio driver name is not empty; got: %s", audioDriver); /* NOLINT(clang-analyzer-core.NullDereference): Checked for NULL above */
+ if (hint && SDL_strcmp(audioDriver, hint) != 0) {
+ continue;
+ }
+
/* Call Init */
result = SDL_AudioInit(audioDriver);
SDLTest_AssertPass("Call to SDL_AudioInit('%s')", audioDriver);
@@ -140,6 +145,7 @@ int audio_initOpenCloseQuitAudio()
int i, iMax, j, k;
const char *audioDriver;
SDL_AudioSpec desired;
+ const char *hint = SDL_GetHint(SDL_HINT_AUDIODRIVER);
/* Stop SDL audio subsystem */
SDL_QuitSubSystem(SDL_INIT_AUDIO);
@@ -155,6 +161,10 @@ int audio_initOpenCloseQuitAudio()
SDLTest_Assert(audioDriver != NULL, "Audio driver name is not NULL");
SDLTest_AssertCheck(audioDriver[0] != '\0', "Audio driver name is not empty; got: %s", audioDriver); /* NOLINT(clang-analyzer-core.NullDereference): Checked for NULL above */
+ if (hint && SDL_strcmp(audioDriver, hint) != 0) {
+ continue;
+ }
+
/* Change specs */
for (j = 0; j < 2; j++) {
@@ -229,6 +239,7 @@ int audio_pauseUnpauseAudio()
int originalCounter;
const char *audioDriver;
SDL_AudioSpec desired;
+ const char *hint = SDL_GetHint(SDL_HINT_AUDIODRIVER);
/* Stop SDL audio subsystem */
SDL_QuitSubSystem(SDL_INIT_AUDIO);
@@ -244,6 +255,10 @@ int audio_pauseUnpauseAudio()
SDLTest_Assert(audioDriver != NULL, "Audio driver name is not NULL");
SDLTest_AssertCheck(audioDriver[0] != '\0', "Audio driver name is not empty; got: %s", audioDriver); /* NOLINT(clang-analyzer-core.NullDereference): Checked for NULL above */
+ if (hint && SDL_strcmp(audioDriver, hint) != 0) {
+ continue;
+ }
+
/* Change specs */
for (j = 0; j < 2; j++) {