diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp
index 41930f539..4350152ac 100644
--- a/indra/llaudio/llaudiodecodemgr.cpp
+++ b/indra/llaudio/llaudiodecodemgr.cpp
@@ -249,7 +249,7 @@ BOOL LLVorbisDecodeState::initDecode()
llwarns << "Bad sound caught by zmagic" << llendl;
abort_decode = true;
}
- else
+ else if(!gAudiop->getAllowLargeSounds())
{
//
//Much more restrictive than zmagic. Perhaps make toggleable.
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index fa5444cf5..59977faf2 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -115,6 +115,8 @@ void LLAudioEngine::setDefaults()
for (U32 i = 0; i < LLAudioEngine::AUDIO_TYPE_COUNT; i++)
mSecondaryGain[i] = 1.0f;
+
+ mAllowLargeSounds = false;
}
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index c41458553..7f07a5bc2 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -187,6 +187,8 @@ public:
bool updateBufferForData(LLAudioData *adp, const LLUUID &audio_uuid = LLUUID::null);
+ void setAllowLargeSounds(bool allow) { mAllowLargeSounds = allow ;}
+ bool getAllowLargeSounds() const {return mAllowLargeSounds;}
// Asset callback when we're retrieved a sound from the asset server.
void startNextTransfer();
@@ -260,6 +262,8 @@ protected:
private:
void setDefaults();
LLStreamingAudioInterface *mStreamingAudioImpl;
+
+ bool mAllowLargeSounds;
};
diff --git a/indra/llaudio/llaudioengine_fmod.cpp b/indra/llaudio/llaudioengine_fmod.cpp
index 8d3f70f89..cdd27ec3e 100644
--- a/indra/llaudio/llaudioengine_fmod.cpp
+++ b/indra/llaudio/llaudioengine_fmod.cpp
@@ -107,6 +107,7 @@ bool LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
// This means we also try to play audio when minimized,
// so we manually handle muting in that case. JC
fmod_flags |= FSOUND_INIT_GLOBALFOCUS;
+ fmod_flags |= FSOUND_INIT_DSOUND_HRTF_FULL;
#endif
#if LL_LINUX
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
index 87f011643..bbf1746bf 100644
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -233,6 +233,7 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
//llinfos << "LLURLRequest::process_impl()" << llendl;
if(!buffer) return STATUS_ERROR;
+ if(!mDetail) return STATUS_ERROR; //Seems to happen on occasion. Need to hunt down why.
switch(mState)
{
case STATE_INITIALIZED:
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index b10c77c1a..552814c7e 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -307,6 +307,11 @@ bool LLTexUnit::bind(LLCubeMap* cubeMap)
return false;
}
+ if (cubeMap->mImages[0].isNull())
+ {
+ llwarns << "NULL LLTexUnit::bind cubeMap->mImages[0]" << llendl;
+ return false;
+ }
if (mCurrTexture != cubeMap->mImages[0]->getTexName())
{
if (gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps)
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 2c02d444f..07da20141 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9,6 +9,17 @@
settings_rlv.xml
+ AllowLargeSounds
+
FloaterAvatarTextRect