浏览代码

Fix possible crashes on audio shutdown

Ivan Savenko 8 月之前
父节点
当前提交
6855b895a0
共有 3 个文件被更改,包括 5 次插入4 次删除
  1. 3 2
      client/media/CAudioBase.cpp
  2. 1 2
      client/media/CMusicHandler.cpp
  3. 1 0
      client/media/CSoundHandler.cpp

+ 3 - 2
client/media/CAudioBase.cpp

@@ -37,7 +37,8 @@ CAudioBase::~CAudioBase()
 	--initializationCounter;
 
 	if(initializationCounter == 0 && initializeSuccess)
+	{
 		Mix_CloseAudio();
-
-	initializeSuccess = false;
+		initializeSuccess = false;
+	}
 }

+ 1 - 2
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();
 	}
 

+ 1 - 0
client/media/CSoundHandler.cpp

@@ -56,6 +56,7 @@ CSoundHandler::~CSoundHandler()
 {
 	if(isInitialized())
 	{
+		Mix_ChannelFinished(nullptr);
 		Mix_HaltChannel(-1);
 
 		for(auto & chunk : soundChunks)