diff options
| -rw-r--r-- | indra/llaudio/llaudioengine.cpp | 4 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine.h | 24 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/lldeferredsounds.cpp | 12 | ||||
| -rw-r--r-- | 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 ef560cd7fc..06e752cf34 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 df1e4dc305..99b96c3c38 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 @@ public:  	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 @@ protected:  	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 a291fac5a1..d09c835e41 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 2b2b493875..9416e7cd29 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 50da9acf2b..bf1eb62957 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();  }; | 
