From 4c5790d4bf24d80fd88f36e85a4aa51d4dc06c30 Mon Sep 17 00:00:00 2001
From: Gilbert Gonzales <gilbert@lindenlab.com>
Date: Mon, 28 Jan 2013 18:27:54 -0800
Subject: [PATCH] CHUI-667: Post code review changes

---
 indra/llaudio/llaudioengine.cpp    |  4 ++++
 indra/llaudio/llaudioengine.h      | 24 ++++++++++++++++++++++++
 indra/newview/llappviewer.cpp      |  8 +++-----
 indra/newview/lldeferredsounds.cpp | 12 ++++++------
 indra/newview/lldeferredsounds.h   |  6 ++++--
 5 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index ef560cd7fca..06e752cf340 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -839,6 +839,10 @@ void LLAudioEngine::triggerSound(const LLUUID &audio_uuid, const LLUUID& owner_i
 	asp->play(audio_uuid);
 }
 
+void LLAudioEngine::triggerSound(SoundData& soundData)
+{
+	triggerSound(soundData.audio_uuid, soundData.owner_id, soundData.gain, soundData.type, soundData.pos_global);
+}
 
 void LLAudioEngine::setListenerPos(LLVector3 aVec)
 {
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index df1e4dc3058..99b96c3c38b 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -66,6 +66,7 @@ class LLAudioChannel;
 class LLAudioChannelOpenAL;
 class LLAudioBuffer;
 class LLStreamingAudioInterface;
+struct SoundData;
 
 
 //
@@ -144,6 +145,8 @@ class LLAudioEngine
 	void triggerSound(const LLUUID &sound_id, const LLUUID& owner_id, const F32 gain,
 					  const S32 type = LLAudioEngine::AUDIO_TYPE_NONE,
 					  const LLVector3d &pos_global = LLVector3d::zero);
+	void triggerSound(SoundData& soundData);
+
 	bool preloadSound(const LLUUID &id);
 
 	void addAudioSource(LLAudioSource *asp);
@@ -456,6 +459,27 @@ class LLAudioBuffer
 	LLFrameTimer mLastUseTimer;
 };
 
+struct SoundData
+{
+	LLUUID audio_uuid;
+	LLUUID owner_id;
+	F32 gain;
+	S32 type;
+	LLVector3d pos_global;
+
+	SoundData(const LLUUID &audio_uuid, 
+		const LLUUID& owner_id, 
+		const F32 gain, 					  
+		const S32 type = LLAudioEngine::AUDIO_TYPE_NONE,
+		const LLVector3d &pos_global = LLVector3d::zero)
+	{
+		this->audio_uuid = audio_uuid;
+		this->owner_id = owner_id;
+		this->gain = gain;
+		this->type = type;
+		this->pos_global = pos_global;
+	}
+};
 
 
 extern LLAudioEngine* gAudiop;
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index a291fac5a14..d09c835e411 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -221,8 +221,6 @@
 #include "llmachineid.h"
 #include "llmainlooprepeater.h"
 
-#include <queue>
-
 // *FIX: These extern globals should be cleaned up.
 // The globals either represent state/config/resource-storage of either 
 // this app, or another 'component' of the viewer. App globals should be 
@@ -458,11 +456,11 @@ void idle_afk_check()
 }
 
 // A callback set in LLAppViewer::init()
-void ui_audio_callback(const LLUUID& uuid)
+static void ui_audio_callback(const LLUUID& uuid)
 {
 	if (gAudiop)
 	{
-		gAudiop->triggerSound(uuid, gAgent.getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_UI);
+		gAudiop->triggerSound(SoundData(uuid, gAgent.getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_UI));
 	}
 }
 
@@ -471,7 +469,7 @@ static void deferred_ui_audio_callback(const LLUUID& uuid)
 {
 	if (gAudiop)
 	{
-		LLDeferredSounds::instance().deferSound(uuid);
+		LLDeferredSounds::instance().deferSound(SoundData(uuid, gAgent.getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_UI));
 	}
 }
 
diff --git a/indra/newview/lldeferredsounds.cpp b/indra/newview/lldeferredsounds.cpp
index 2b2b493875e..9416e7cd293 100644
--- a/indra/newview/lldeferredsounds.cpp
+++ b/indra/newview/lldeferredsounds.cpp
@@ -29,17 +29,17 @@
 
 #include "lldeferredsounds.h"
 
-void ui_audio_callback(const LLUUID& uuid);
+#include "llaudioengine.h"
 
-void LLDeferredSounds::deferSound(LLUUID sound)
+void LLDeferredSounds::deferSound(SoundData& sound)
 {
-	soundQueue.push(sound);
+	soundVector.push_back(sound);
 }
 void LLDeferredSounds::playdeferredSounds()
 {
-	while(soundQueue.size())
+	while(soundVector.size())
 	{
-		ui_audio_callback(soundQueue.front());
-		soundQueue.pop();
+		gAudiop->triggerSound(soundVector.back());
+		soundVector.pop_back();
 	}
 }
diff --git a/indra/newview/lldeferredsounds.h b/indra/newview/lldeferredsounds.h
index 50da9acf2b2..bf1eb629570 100644
--- a/indra/newview/lldeferredsounds.h
+++ b/indra/newview/lldeferredsounds.h
@@ -29,13 +29,15 @@
 
 #include "llsingleton.h"
 
+struct SoundData;
+
 class LLDeferredSounds : public LLSingleton<LLDeferredSounds>
 {
 private:
-	std::queue<LLUUID> soundQueue;
+	std::vector<SoundData> soundVector;
 public:
 	//Add sounds to be played once progress bar is hidden (such as after teleport or loading screen)
-	void deferSound(LLUUID sound);
+	void deferSound(SoundData& sound);
 
 	void playdeferredSounds();
 };
-- 
GitLab