From 8f3a185c6f2a8e018c8563c64403ec9085867c8f Mon Sep 17 00:00:00 2001 From: Jeod <47716344+JeodC@users.noreply.github.com> Date: Sun, 2 Aug 2026 15:32:51 -0400 Subject: [PATCH] Fix imgui audio backends showing up when they shouldn't --- src/port/UI/Menu.cpp | 13 ++++++++++--- src/port/UI/Menu.h | 3 +++ src/port/UI/MenuTypes.h | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/port/UI/Menu.cpp b/src/port/UI/Menu.cpp index d04ecdd02..778aff569 100644 --- a/src/port/UI/Menu.cpp +++ b/src/port/UI/Menu.cpp @@ -113,6 +113,13 @@ void Menu::UpdateWindowBackendObjects() { } } +void Menu::UpdateAudioBackendObjects() { + availableAudioBackends = Ship::Context::GetRawInstance()->GetAudio()->GetAvailableAudioBackends(); + for (auto& backend : *availableAudioBackends) { + availableAudioBackendsMap[backend] = audioBackendsMap.at(backend); + } +} + bool Menu::IsMenuPopped() { return popped; } @@ -135,6 +142,7 @@ void Menu::InitElement() { menuThemeIndex = static_cast(CVarGetInteger(CVAR_SETTING("Menu.Theme"), defaultThemeIndex)); UpdateWindowBackendObjects(); + UpdateAudioBackendObjects(); } void Menu::UpdateElement() { @@ -342,10 +350,9 @@ void Menu::MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors me UIWidgets::ComboboxOptions options = {}; options.color = menuThemeIndex; options.tooltip = "Sets the audio API used by the game. Requires a relaunch to take effect."; - options.disabled = - Ship::Context::GetRawInstance()->GetAudio()->GetAvailableAudioBackends()->size() <= 1; + options.disabled = availableAudioBackends->size() <= 1; options.disabledTooltip = "Only one audio API is available on this platform."; - if (UIWidgets::Combobox("Audio API", ¤tAudioBackend, audioBackendsMap, options)) { + if (UIWidgets::Combobox("Audio API", ¤tAudioBackend, availableAudioBackendsMap, options)) { Ship::Context::GetRawInstance()->GetAudio()->SetCurrentAudioBackend(currentAudioBackend); } } break; diff --git a/src/port/UI/Menu.h b/src/port/UI/Menu.h index f32c349d6..b1b8378e3 100644 --- a/src/port/UI/Menu.h +++ b/src/port/UI/Menu.h @@ -20,6 +20,7 @@ class Menu : public GuiWindow { void InsertSidebarSearch(); void RemoveSidebarSearch(); void UpdateWindowBackendObjects(); + void UpdateAudioBackendObjects(); bool IsMenuPopped(); UIWidgets::Colors GetMenuThemeColor(); @@ -41,6 +42,8 @@ class Menu : public GuiWindow { std::shared_ptr> availableWindowBackends; std::unordered_map availableWindowBackendsMap; Fast::WindowBackend configWindowBackend; + std::shared_ptr> availableAudioBackends; + std::unordered_map availableAudioBackendsMap; std::unordered_map disabledMap; std::vector disabledVector; diff --git a/src/port/UI/MenuTypes.h b/src/port/UI/MenuTypes.h index 8131e25af..f86cf363b 100644 --- a/src/port/UI/MenuTypes.h +++ b/src/port/UI/MenuTypes.h @@ -266,6 +266,7 @@ struct MainMenuEntry { static const std::unordered_map audioBackendsMap = { { Ship::AudioBackend::WASAPI, "Windows Audio Session API" }, + { Ship::AudioBackend::COREAUDIO, "Core Audio" }, { Ship::AudioBackend::SDL, "SDL" }, { Ship::AudioBackend::NUL, "Null" }, };