diff --git a/src/dusk/audio/DuskAudioSystem.cpp b/src/dusk/audio/DuskAudioSystem.cpp index 90ab355228..a3bfe40252 100644 --- a/src/dusk/audio/DuskAudioSystem.cpp +++ b/src/dusk/audio/DuskAudioSystem.cpp @@ -107,11 +107,21 @@ void dusk::audio::Initialize() { } void dusk::audio::Reinitialize() { - if (InitSDL3Output()) { + // don't re-init unless we've initialized first (using PlaybackStream being set as proxy) + if (PlaybackStream && InitSDL3Output()) { SDL_ResumeAudioStreamDevice(PlaybackStream); } } +void dusk::audio::Shutdown() { + if (PlaybackStream) { + SDL_DestroyAudioStream(PlaybackStream); + PlaybackStream = nullptr; + } + + SDL_QuitSubSystem(SDL_INIT_AUDIO); +} + void dusk::audio::SetMasterVolume(const f32 value) { JASCriticalSection section; diff --git a/src/dusk/audio/DuskAudioSystem.h b/src/dusk/audio/DuskAudioSystem.h index efec50658b..8a9f9634b7 100644 --- a/src/dusk/audio/DuskAudioSystem.h +++ b/src/dusk/audio/DuskAudioSystem.h @@ -21,6 +21,8 @@ namespace dusk::audio { void Reinitialize(); + void Shutdown(); + void SetEnableReverb(bool value); void SetMasterVolume(f32 value); diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index b44f5e41b8..51eb5633e6 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -975,6 +975,7 @@ int game_main(int argc, char* argv[]) { #if BOREALIS_HAS_DISCORD dusk::discord::shutdown(); #endif + dusk::audio::Shutdown(); dusk::ui::shutdown(); dusk::texture_replacements::shutdown(); dusk::config::shutdown();