diff --git a/client/CMusicHandler.cpp b/client/CMusicHandler.cpp index a01c52775..948d24de1 100644 --- a/client/CMusicHandler.cpp +++ b/client/CMusicHandler.cpp @@ -281,6 +281,7 @@ bool CSoundHandler::ambientCheckVisitable() const void CSoundHandler::ambientUpdateChannels(std::map sounds) { + boost::mutex::scoped_lock guard(mutex); std::vector stoppedSounds; for(auto & pair : ambientChannels) { @@ -310,6 +311,7 @@ void CSoundHandler::ambientUpdateChannels(std::map sounds) void CSoundHandler::ambientStopAllChannels() { + boost::mutex::scoped_lock guard(mutex); for(auto ch : ambientChannels) { ambientStopSound(ch.first); @@ -375,7 +377,7 @@ void CMusicHandler::release() { if (initialized) { - boost::mutex::scoped_lock guard(musicMutex); + boost::mutex::scoped_lock guard(mutex); Mix_HookMusicFinished(nullptr); @@ -439,7 +441,7 @@ void CMusicHandler::queueNext(std::unique_ptr queued) if (!initialized) return; - boost::mutex::scoped_lock guard(musicMutex); + boost::mutex::scoped_lock guard(mutex); next = std::move(queued); @@ -468,7 +470,7 @@ void CMusicHandler::stopMusic(int fade_ms) if (!initialized) return; - boost::mutex::scoped_lock guard(musicMutex); + boost::mutex::scoped_lock guard(mutex); if (current.get() != nullptr) current->stop(fade_ms); @@ -485,7 +487,7 @@ void CMusicHandler::setVolume(ui32 percent) void CMusicHandler::musicFinishedCallback(void) { - boost::mutex::scoped_lock guard(musicMutex); + boost::mutex::scoped_lock guard(mutex); if (current.get() != nullptr) { diff --git a/client/CMusicHandler.h b/client/CMusicHandler.h index 3819020be..75bc8b596 100644 --- a/client/CMusicHandler.h +++ b/client/CMusicHandler.h @@ -20,6 +20,7 @@ struct Mix_Chunk; class CAudioBase { protected: + boost::mutex mutex; bool initialized; int volume; // from 0 (mute) to 100 @@ -118,9 +119,6 @@ public: class CMusicHandler: public CAudioBase { private: - // Because we use the SDL music callback, our music variables must - // be protected - boost::mutex musicMutex; //update volume on configuration change SettingsListener listener; void onVolumeChange(const JsonNode &volumeNode);