From 6855b895a0f8a9119f1d4f9454ac2e8eb99cc9ab Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Wed, 12 Mar 2025 13:32:46 +0000 Subject: [PATCH] Fix possible crashes on audio shutdown --- client/media/CAudioBase.cpp | 5 +++-- client/media/CMusicHandler.cpp | 3 +-- client/media/CSoundHandler.cpp | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/client/media/CAudioBase.cpp b/client/media/CAudioBase.cpp index 24bbc1eff..e4f08e8a0 100644 --- a/client/media/CAudioBase.cpp +++ b/client/media/CAudioBase.cpp @@ -37,7 +37,8 @@ CAudioBase::~CAudioBase() --initializationCounter; if(initializationCounter == 0 && initializeSuccess) + { Mix_CloseAudio(); - - initializeSuccess = false; + initializeSuccess = false; + } } diff --git a/client/media/CMusicHandler.cpp b/client/media/CMusicHandler.cpp index f9c92b7ce..bd9ee81be 100644 --- a/client/media/CMusicHandler.cpp +++ b/client/media/CMusicHandler.cpp @@ -232,8 +232,7 @@ MusicEntry::~MusicEntry() if(loop == 0 && Mix_FadingMusic() != MIX_NO_FADING) { - assert(0); - logGlobal->error("Attempt to delete music while fading out!"); + logGlobal->trace("Halting playback of music file %s", currentName.getOriginalName()); Mix_HaltMusic(); } diff --git a/client/media/CSoundHandler.cpp b/client/media/CSoundHandler.cpp index e86ab15a9..05baa8693 100644 --- a/client/media/CSoundHandler.cpp +++ b/client/media/CSoundHandler.cpp @@ -56,6 +56,7 @@ CSoundHandler::~CSoundHandler() { if(isInitialized()) { + Mix_ChannelFinished(nullptr); Mix_HaltChannel(-1); for(auto & chunk : soundChunks)