summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorsimon <none@none>2013-09-17 17:01:52 -0700
committersimon <none@none>2013-09-17 17:01:52 -0700
commit33e70236f0226b2e4ebabccfa28cca04ff01211e (patch)
tree0f2b55c79705db537b26b2a494479ec659b68868 /indra/newview
parent9c4d4242f6b7e7254ffc82209928f7bbe4696f16 (diff)
MAINT-3161 : Clean up avatar muting code and prototype feature
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/app_settings/settings.xml17
-rw-r--r--indra/newview/llavatarrenderinfoaccountant.cpp63
-rw-r--r--indra/newview/llavatarrenderinfoaccountant.h2
-rwxr-xr-xindra/newview/llviewermenu.cpp18
-rwxr-xr-xindra/newview/llviewerregion.cpp2
-rwxr-xr-xindra/newview/llvoavatar.cpp136
-rwxr-xr-xindra/newview/llvoavatar.h2
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_attachment_other.xml24
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_avatar_other.xml26
9 files changed, 175 insertions, 115 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index eacc7fbec5..31c69f6b3e 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9735,10 +9735,11 @@
<key>Value</key>
<integer>1</integer>
</map>
+
<key>RenderAutoMuteByteLimit</key>
<map>
<key>Comment</key>
- <string>Maximum bytes of attachments before an avatar is rendered as a simple imposter (0 for no limit).</string>
+ <string>Maximum bytes of attachments before an avatar is rendered as a simple impostor (0 for no limit).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9746,10 +9747,10 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>RenderAutoMuteRenderCostLimit</key>
+ <key>RenderAutoMuteRenderWeightLimit</key>
<map>
<key>Comment</key>
- <string>Maximum render weight before an avatar is rendered as a simple imposter (0 to not use this limit).</string>
+ <string>Maximum render weight before an avatar is rendered as a simple impostor (0 to not use this limit).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9760,7 +9761,7 @@
<key>RenderAutoMuteSurfaceAreaLimit</key>
<map>
<key>Comment</key>
- <string>Maximum surface area of attachments before an avatar is rendered as a simple imposter (0 to not use this limit).</string>
+ <string>Maximum surface area of attachments before an avatar is rendered as a simple impostor (0 to not use this limit).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -9768,16 +9769,16 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>RenderAutoMuteThreshold</key>
+ <key>RenderAutoMuteFunctions</key>
<map>
<key>Comment</key>
- <string>Threshold on the Avatar Detail slider where simple imposter mode is enabled. (less than 0 is always on, greather than 1 always off)</string>
+ <string>Developing feature to render some avatars using simple impostors or colored silhouettes. (Set to 7 for all functionality)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>F32</string>
+ <string>U32</string>
<key>Value</key>
- <real>0.25</real>
+ <real>0</real>
</map>
<key>RenderAutoMuteLogging</key>
<map>
diff --git a/indra/newview/llavatarrenderinfoaccountant.cpp b/indra/newview/llavatarrenderinfoaccountant.cpp
index 89c1b2a186..e778e0c032 100644
--- a/indra/newview/llavatarrenderinfoaccountant.cpp
+++ b/indra/newview/llavatarrenderinfoaccountant.cpp
@@ -38,6 +38,7 @@
#include "llhttpclient.h"
#include "lltimer.h"
#include "llviewercontrol.h"
+#include "llviewermenu.h"
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
#include "llvoavatar.h"
@@ -92,7 +93,7 @@ public:
{
if (LLAvatarRenderInfoAccountant::logRenderInfo())
{
- llinfos << "Result for avatar weights request for region " << regionp->getName() << ":" << llendl;
+ llinfos << "LRI: Result for avatar weights request for region " << regionp->getName() << ":" << llendl;
}
if (content.isMap())
@@ -115,7 +116,7 @@ public:
if (LLAvatarRenderInfoAccountant::logRenderInfo())
{
- llinfos << " Agent " << target_agent_id
+ llinfos << "LRI: Agent " << target_agent_id
<< ": " << agent_info_map << llendl;
}
@@ -186,7 +187,7 @@ public:
{
if (LLAvatarRenderInfoAccountant::logRenderInfo())
{
- llinfos << "Result for avatar weights POST for region " << regionp->getName()
+ llinfos << "LRI: Result for avatar weights POST for region " << regionp->getName()
<< ": " << content << llendl;
}
@@ -224,7 +225,7 @@ void LLAvatarRenderInfoAccountant::sendRenderInfoToRegion(LLViewerRegion * regio
{
if (logRenderInfo())
{
- llinfos << "Sending avatar render info to region "
+ llinfos << "LRI: Sending avatar render info to region "
<< regionp->getName()
<< " from " << url
<< llendl;
@@ -253,7 +254,7 @@ void LLAvatarRenderInfoAccountant::sendRenderInfoToRegion(LLViewerRegion * regio
if (logRenderInfo())
{
- llinfos << "Sending avatar render info for " << avatar->getID()
+ llinfos << "LRI: Sending avatar render info for " << avatar->getID()
<< ": " << info << llendl;
}
}
@@ -281,7 +282,7 @@ void LLAvatarRenderInfoAccountant::getRenderInfoFromRegion(LLViewerRegion * regi
{
if (logRenderInfo())
{
- llinfos << "Requesting avatar render info for region "
+ llinfos << "LRI: Requesting avatar render info for region "
<< regionp->getName()
<< " from " << url
<< llendl;
@@ -304,6 +305,12 @@ void LLAvatarRenderInfoAccountant::idle()
S32 num_avs = LLCharacter::sInstances.size();
+ if (logRenderInfo())
+ {
+ llinfos << "LRI: Scanning all regions and checking for render info updates"
+ << llendl;
+ }
+
// Check all regions and see if it's time to fetch/send data
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
@@ -325,6 +332,35 @@ void LLAvatarRenderInfoAccountant::idle()
// We scanned all the regions, reset the request timer.
sRenderInfoReportTimer.resetWithExpiry(SECS_BETWEEN_REGION_SCANS);
}
+
+ static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions");
+ static U32 prev_render_auto_mute_functions = (U32) -1;
+ if (prev_render_auto_mute_functions != render_auto_mute_functions)
+ {
+ prev_render_auto_mute_functions = render_auto_mute_functions;
+
+ // Adjust menus
+ BOOL show_items = (BOOL)(render_auto_mute_functions & 0x04);
+ gMenuAvatarOther->setItemVisible( std::string("Normal"), show_items);
+ gMenuAvatarOther->setItemVisible( std::string("Always use impostor"), show_items);
+ gMenuAvatarOther->setItemVisible( std::string("Never use impostor"), show_items);
+ gMenuAvatarOther->setItemVisible( std::string("Impostor seperator"), show_items);
+
+ gMenuAttachmentOther->setItemVisible( std::string("Normal"), show_items);
+ gMenuAttachmentOther->setItemVisible( std::string("Always use impostor"), show_items);
+ gMenuAttachmentOther->setItemVisible( std::string("Never use impostor"), show_items);
+ gMenuAttachmentOther->setItemVisible( std::string("Impostor seperator"), show_items);
+
+ if (!show_items)
+ { // Turning off visual muting
+ for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
+ iter != LLCharacter::sInstances.end(); ++iter)
+ { // Make sure all AVs have the setting cleared
+ LLVOAvatar* inst = (LLVOAvatar*) *iter;
+ inst->setCachedVisualMute(false);
+ }
+ }
+ }
}
@@ -332,14 +368,23 @@ void LLAvatarRenderInfoAccountant::idle()
// Make sRenderInfoReportTimer expire so the next call to idle() will scan and query a new region
// called via LLViewerRegion::setCapabilitiesReceived() boost signals when the capabilities
// are returned for a new LLViewerRegion, and is the earliest time to get render info
-void LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer()
+void LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer(const LLUUID& region_id)
{
if (logRenderInfo())
{
- llinfos << "Viewer has new region capabilities" << llendl;
+ llinfos << "LRI: Viewer has new region capabilities, clearing global render info timer"
+ << " and timer for region " << region_id
+ << llendl;
}
- sRenderInfoReportTimer.resetWithExpiry(0.f);
+ // Reset the global timer so it will scan regions immediately
+ sRenderInfoReportTimer.reset();
+
+ LLViewerRegion* regionp = LLWorld::instance().getRegionFromID(region_id);
+ if (regionp)
+ { // Reset the region's timer so it will request data immediately
+ regionp->getRenderInfoRequestTimer().reset();
+ }
}
// static
diff --git a/indra/newview/llavatarrenderinfoaccountant.h b/indra/newview/llavatarrenderinfoaccountant.h
index 97dd9f0ad3..d68f2dccfb 100644
--- a/indra/newview/llavatarrenderinfoaccountant.h
+++ b/indra/newview/llavatarrenderinfoaccountant.h
@@ -42,7 +42,7 @@ public:
static void sendRenderInfoToRegion(LLViewerRegion * regionp);
static void getRenderInfoFromRegion(LLViewerRegion * regionp);
- static void expireRenderInfoReportTimer();
+ static void expireRenderInfoReportTimer(const LLUUID& region_id);
static void idle();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index c6c1090f45..9468a2d542 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2930,7 +2930,7 @@ bool enable_object_unmute()
// 0 = normal, 1 = always, 2 = never
-class LLAvatarCheckImposterMode : public view_listener_t
+class LLAvatarCheckImpostorMode : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
@@ -2956,7 +2956,7 @@ class LLAvatarCheckImposterMode : public view_listener_t
};
// 0 = normal, 1 = always, 2 = never
-class LLAvatarSetImposterMode : public view_listener_t
+class LLAvatarSetImpostorMode : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
@@ -2971,16 +2971,20 @@ class LLAvatarSetImposterMode : public view_listener_t
{
case 0:
avatar->setVisualMuteSettings(LLVOAvatar::VISUAL_MUTE_NOT_SET);
- return true;
+ break;
case 1:
avatar->setVisualMuteSettings(LLVOAvatar::ALWAYS_VISUAL_MUTE);
- return true;
+ break;
case 2:
avatar->setVisualMuteSettings(LLVOAvatar::NEVER_VISUAL_MUTE);
- return true;
+ break;
default:
return false;
}
+
+ avatar->forceUpdateVisualMuteSettings();
+ LLVOAvatar::cullAvatarsByPixelArea();
+ return true;
} // handleEvent()
};
@@ -8736,8 +8740,8 @@ void initialize_menus()
view_listener_t::addMenu( new LLCheckPanelPeopleTab(), "SideTray.CheckPanelPeopleTab");
// Avatar pie menu
- view_listener_t::addMenu(new LLAvatarCheckImposterMode(), "Avatar.CheckImposterMode");
- view_listener_t::addMenu(new LLAvatarSetImposterMode(), "Avatar.SetImposterMode");
+ view_listener_t::addMenu(new LLAvatarCheckImpostorMode(), "Avatar.CheckImpostorMode");
+ view_listener_t::addMenu(new LLAvatarSetImpostorMode(), "Avatar.SetImpostorMode");
view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute");
view_listener_t::addMenu(new LLAvatarAddFriend(), "Avatar.AddFriend");
view_listener_t::addMenu(new LLAvatarAddContact(), "Avatar.AddContact");
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 778c0ee61a..b91dde4113 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -400,7 +400,7 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE
mRenderInfoRequestTimer.resetWithExpiry(0.f); // Set timer to be expired
- setCapabilitiesReceivedCallback(boost::bind(&LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer));
+ setCapabilitiesReceivedCallback(boost::bind(&LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer, _1));
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 6a504e10c4..d449efb7e7 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2987,81 +2987,90 @@ bool LLVOAvatar::isVisuallyMuted()
{
bool muted = false;
- // Priority order (highest priority first)
- // * own avatar is never visually muted
- // * if on the "always draw normally" list, draw them normally
- // * if on the "always visually mute" list, mute them
- // * draw them normally if they meet the following criteria:
- // - within the closest N avatars OR on friends list OR in an IM chat
- // - AND aren't over the thresholds
- // * otherwise visually mute all other avatars
-
if (!isSelf())
{
- static LLCachedControl<F32> render_mute_threshold(gSavedSettings, "RenderAutoMuteThreshold");
- static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit");
- static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit");
- static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderCostLimit");
-
- if (mVisuallyMuteSetting == ALWAYS_VISUAL_MUTE)
- { // Always want to see this AV as an imposter
- muted = true;
- }
- else if (mVisuallyMuteSetting == NEVER_VISUAL_MUTE)
- { // Never show as imposter
- muted = false;
- }
- else if (LLVOAvatar::sLODFactor <= render_mute_threshold)
+ static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions");
+ if (render_auto_mute_functions) // Hacky debug switch for developing feature
{
- F64 now = LLFrameTimer::getTotalSeconds();
+ // Priority order (highest priority first)
+ // * own avatar is never visually muted
+ // * if on the "always draw normally" list, draw them normally
+ // * if on the "always visually mute" list, mute them
+ // * draw them normally if they meet the following criteria:
+ // - within the closest N avatars OR on friends list OR in an IM chat
+ // - AND aren't over the thresholds
+ // * otherwise visually mute all other avatars
- if (now < mCachedVisualMuteUpdateTime)
- { // Use cached mute value
- muted = mCachedVisualMute;
+ static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit");
+ static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit");
+ static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit");
+
+ if (mVisuallyMuteSetting == ALWAYS_VISUAL_MUTE)
+ { // Always want to see this AV as an impostor
+ muted = true;
}
- else
- { // Determine if visually muted or not
+ else if (mVisuallyMuteSetting == NEVER_VISUAL_MUTE)
+ { // Never show as impostor
+ muted = false;
+ }
+ else
+ {
+ F64 now = LLFrameTimer::getTotalSeconds();
- U32 max_cost = (U32) (max_render_cost*(LLVOAvatar::sLODFactor+0.5));
+ if (now < mCachedVisualMuteUpdateTime)
+ { // Use cached mute value
+ muted = mCachedVisualMute;
+ }
+ else
+ { // Determine if visually muted or not
- muted = LLMuteList::getInstance()->isMuted(getID()) ||
- (mAttachmentGeometryBytes > max_attachment_bytes && max_attachment_bytes > 0) ||
- (mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f) ||
- (mVisualComplexity > max_cost && max_render_cost > 0);
+ U32 max_cost = (U32) (max_render_cost*(LLVOAvatar::sLODFactor+0.5));
- // Could be part of the grand || collection above, but yanked out to make the logic visible
- if (!muted)
- {
- if (sMaxVisible > 0)
- { // They are above the visibilty rank - mute them
- muted = (mVisibilityRank > sMaxVisible);
- }
-
- /* Not used - always draw friends or those in IMs. Works nicely, needs UI?
- if (muted || // Don't mute friends or IMs
- sMaxVisible == 0)
+ muted = LLMuteList::getInstance()->isMuted(getID()) ||
+ (mAttachmentGeometryBytes > max_attachment_bytes && max_attachment_bytes > 0) ||
+ (mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f) ||
+ (mVisualComplexity > max_cost && max_render_cost > 0);
+
+ // Could be part of the grand || collection above, but yanked out to make the logic visible
+ if (!muted)
{
- muted = !(LLAvatarTracker::instance().isBuddy(getID()));
- if (muted)
- { // Not a friend, so they are muted ... are they in an IM?
- LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,getID());
- muted = !gIMMgr->hasSession(session_id);
+ if (sMaxVisible > 0)
+ { // They are above the visibilty rank - mute them
+ muted = (mVisibilityRank > sMaxVisible);
+ }
+
+ // Always draw friends or those in IMs. Needs UI?
+ if ((render_auto_mute_functions & 0x02) &&
+ (muted || sMaxVisible == 0)) // Don't mute friends or IMs
+ {
+ muted = !(LLAvatarTracker::instance().isBuddy(getID()));
+ if (muted)
+ { // Not a friend, so they are muted ... are they in an IM?
+ LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,getID());
+ muted = !gIMMgr->hasSession(session_id);
+ }
}
}
- */
- }
- // Save visual mute state and set interval for updating
- const F64 SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES = 1.5;
- mCachedVisualMuteUpdateTime = now + SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES;
- mCachedVisualMute = muted;
- }
+ // Save visual mute state and set interval for updating
+ const F64 SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES = 1.5;
+ mCachedVisualMuteUpdateTime = now + SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES;
+ mCachedVisualMute = muted;
+ }
+ }
}
}
return muted;
}
+void LLVOAvatar::forceUpdateVisualMuteSettings()
+{
+ // Set the cache time so it's updated ASAP
+ mCachedVisualMuteUpdateTime = LLFrameTimer::getTotalSeconds() - 1.0;
+}
+
+
//------------------------------------------------------------------------
// updateCharacter()
// called on both your avatar and other avatars
@@ -3806,11 +3815,11 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
{ //LOD changed or new mesh created, allocate new vertex buffer if needed
if (needs_rebuild || mDirtyMesh >= 2 || mVisibilityRank <= 4)
{
- updateMeshData();
+ updateMeshData();
mDirtyMesh = 0;
- mNeedsSkin = TRUE;
- mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
- }
+ mNeedsSkin = TRUE;
+ mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
+ }
}
if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) <= 0)
@@ -7868,8 +7877,7 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d
void LLVOAvatar::idleUpdateRenderCost()
{
- static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderCostLimit");
-
+ static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit");
static const U32 ARC_LIMIT = 20000;
if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_ATTACHMENT_BYTES))
@@ -8033,7 +8041,7 @@ LLColor4 LLVOAvatar::calcMutedAVColor(F32 value, S32 range_low, S32 range_high)
LLColor4 new_color = lerp(*spectrum_color[spectrum_index_1], *spectrum_color[spectrum_index_2], fractBetween);
new_color.normalize();
- new_color *= 0.9f;
+ new_color *= 0.7f; // Tone it down a bit
//llinfos << "From value " << std::setprecision(3) << value << " returning color " << new_color
// << " using indexes " << spectrum_index_1 << ", " << spectrum_index_2
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 295175133c..931e65b3ea 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -389,6 +389,8 @@ public:
public:
U32 renderImpostor(LLColor4U color = LLColor4U(255,255,255,255), S32 diffuse_channel = 0);
bool isVisuallyMuted();
+ void setCachedVisualMute(bool muted) { mCachedVisualMute = muted; };
+ void forceUpdateVisualMuteSettings();
enum VisualMuteSettings
{
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
index 47fae51fac..ba91b0b5d9 100755
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -117,37 +117,37 @@
<menu_item_check
name="Normal"
- label="Normal">
+ label="Normal Rendering">
<menu_item_check.on_check
- function="Avatar.CheckImposterMode"
+ function="Avatar.CheckImpostorMode"
parameter="0" />
<menu_item_check.on_click
- function="Avatar.SetImposterMode"
+ function="Avatar.SetImpostorMode"
parameter="0" />
</menu_item_check>
<menu_item_check
- name="Always use imposter"
- label="Always use imposter">
+ name="Always use impostor"
+ label="Always use impostor">
<menu_item_check.on_check
- function="Avatar.CheckImposterMode"
+ function="Avatar.CheckImpostorMode"
parameter="1" />
<menu_item_check.on_click
- function="Avatar.SetImposterMode"
+ function="Avatar.SetImpostorMode"
parameter="1" />
</menu_item_check>
<menu_item_check
- name="Never use imposter"
- label="Never use imposter">
+ name="Never use impostor"
+ label="Never use impostor">
<menu_item_check.on_check
- function="Avatar.CheckImposterMode"
+ function="Avatar.CheckImpostorMode"
parameter="2" />
<menu_item_check.on_click
- function="Avatar.SetImposterMode"
+ function="Avatar.SetImpostorMode"
parameter="2" />
</menu_item_check>
<menu_item_separator
- layout="topleft" />
+ layout="topleft" name="Impostor seperator"/>
<menu_item_call
enabled="false"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
index 935b5b3ea0..8bd013f14b 100755
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -110,37 +110,37 @@
<menu_item_check
name="Normal"
- label="Normal">
+ label="Normal Rendering">
<menu_item_check.on_check
- function="Avatar.CheckImposterMode"
+ function="Avatar.CheckImpostorMode"
parameter="0" />
<menu_item_check.on_click
- function="Avatar.SetImposterMode"
+ function="Avatar.SetImpostorMode"
parameter="0" />
</menu_item_check>
<menu_item_check
- name="Always use imposter"
- label="Always use imposter">
+ name="Always use impostor"
+ label="Always use impostor">
<menu_item_check.on_check
- function="Avatar.CheckImposterMode"
+ function="Avatar.CheckImpostorMode"
parameter="1" />
<menu_item_check.on_click
- function="Avatar.SetImposterMode"
+ function="Avatar.SetImpostorMode"
parameter="1" />
</menu_item_check>
<menu_item_check
- name="Never use imposter"
- label="Never use imposter">
+ name="Never use impostor"
+ label="Never use impostor">
<menu_item_check.on_check
- function="Avatar.CheckImposterMode"
+ function="Avatar.CheckImpostorMode"
parameter="2" />
<menu_item_check.on_click
- function="Avatar.SetImposterMode"
+ function="Avatar.SetImpostorMode"
parameter="2" />
</menu_item_check>
- <menu_item_separator
- layout="topleft" />
+ <menu_item_separator
+ layout="topleft" name="Impostor seperator"/>
<menu_item_call
enabled="false"