summaryrefslogtreecommitdiff
path: root/indra/newview/llviewermessage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewermessage.cpp')
-rw-r--r--indra/newview/llviewermessage.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 088ba62d0c..520de0e403 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3359,6 +3359,12 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
return;
}
+ // Don't play sounds from a region with maturity above current agent maturity
+ if( !gAgent.canAccessMaturityInRegion( region_handle ) )
+ {
+ return;
+ }
+
gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global);
}
@@ -3392,6 +3398,13 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
// audio data into a buffer at this point, as it won't actually
// help us out.
+ // Don't play sounds from a region with maturity above current agent maturity
+ LLVector3d pos_global = objectp->getPositionGlobal();
+ if( !gAgent.canAccessMaturityAtGlobal( pos_global ) )
+ {
+ return;
+ }
+
// Add audioData starts a transfer internally.
sourcep->addAudioData(datap, FALSE);
}
@@ -3421,6 +3434,14 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data)
if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return;
+
+ // Don't play sounds from a region with maturity above current agent maturity
+ LLVector3d pos = objectp->getPositionGlobal();
+ if( !gAgent.canAccessMaturityAtGlobal(pos) )
+ {
+ return;
+ }
+
objectp->setAttachedSound(sound_id, owner_id, gain, flags);
}
@@ -4839,7 +4860,7 @@ void process_teleport_failed(LLMessageSystem *msg, void**)
LLSD args;
// if we have additional alert data
- if (msg->getSizeFast(_PREHASH_AlertInfo, _PREHASH_Message) > 0)
+ if (msg->getNumberOfBlocksFast(_PREHASH_AlertInfo) > 0)
{
// Get the message ID
msg->getStringFast(_PREHASH_AlertInfo, _PREHASH_Message, reason);