Pārlūkot izejas kodu

CAudioBase: move mutex to base class since CSoundHandler need it

Arseniy Shestakov 8 gadi atpakaļ
vecāks
revīzija
d96a3aa5b7
2 mainītis faili ar 7 papildinājumiem un 7 dzēšanām
  1. 6 4
      client/CMusicHandler.cpp
  2. 1 3
      client/CMusicHandler.h

+ 6 - 4
client/CMusicHandler.cpp

@@ -281,6 +281,7 @@ bool CSoundHandler::ambientCheckVisitable() const
 
 void CSoundHandler::ambientUpdateChannels(std::map<std::string, int> sounds)
 {
+	boost::mutex::scoped_lock guard(mutex);
 	std::vector<std::string> stoppedSounds;
 	for(auto & pair : ambientChannels)
 	{
@@ -310,6 +311,7 @@ void CSoundHandler::ambientUpdateChannels(std::map<std::string, int> 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<MusicEntry> 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)
 	{

+ 1 - 3
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);