summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/app_settings/high_graphics.xml2
-rwxr-xr-xindra/newview/app_settings/low_graphics.xml2
-rwxr-xr-xindra/newview/app_settings/mid_graphics.xml2
-rwxr-xr-xindra/newview/app_settings/settings.xml6
-rwxr-xr-xindra/newview/app_settings/ultra_graphics.xml2
-rwxr-xr-xindra/newview/featuretable.txt3
-rwxr-xr-xindra/newview/featuretable_mac.txt3
-rwxr-xr-xindra/newview/llvoavatar.cpp16
-rwxr-xr-xindra/newview/viewer_manifest.py41
9 files changed, 51 insertions, 26 deletions
diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml
index f66ba3c4df..c38b3fcda4 100755
--- a/indra/newview/app_settings/high_graphics.xml
+++ b/indra/newview/app_settings/high_graphics.xml
@@ -29,7 +29,7 @@
<!--Avater Impostors and Visual Muting Limits-->
<RenderAvatarMaxNonImpostors value="20"/>
<RenderAvatarMaxComplexity value="350000"/>
- <RenderAutoMuteSurfaceAreaLimit value="10.0E6"/>
+ <RenderAutoMuteSurfaceAreaLimit value="1250.0"/>
<!--Default for now-->
<RenderVolumeLODFactor value="1.125"/>
<!--NO SHADERS-->
diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml
index 304e7c7347..b0ddb5bd56 100755
--- a/indra/newview/app_settings/low_graphics.xml
+++ b/indra/newview/app_settings/low_graphics.xml
@@ -29,7 +29,7 @@
<!--Avater Impostors and Visual Muting Limits-->
<RenderAvatarMaxNonImpostors value="12"/>
<RenderAvatarMaxComplexity value="75000"/>
- <RenderAutoMuteSurfaceAreaLimit value="10.0E6"/>
+ <RenderAutoMuteSurfaceAreaLimit value="750.0"/>
<!--Default for now-->
<RenderVolumeLODFactor value="1.125"/>
<!--NO SHADERS-->
diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml
index 68f193a15f..41344f935d 100755
--- a/indra/newview/app_settings/mid_graphics.xml
+++ b/indra/newview/app_settings/mid_graphics.xml
@@ -29,7 +29,7 @@
<!--Avater Impostors and Visual Muting Limits-->
<RenderAvatarMaxNonImpostors value="18"/>
<RenderAvatarMaxComplexity value="100000"/>
- <RenderAutoMuteSurfaceAreaLimit value="10.0E6"/>
+ <RenderAutoMuteSurfaceAreaLimit value="1000.0"/>
<!--Default for now-->
<RenderVolumeLODFactor value="1.125"/>
<!--NO SHADERS-->
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index bb8b810b93..ef6107b1d5 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10030,13 +10030,15 @@
<key>RenderAutoMuteSurfaceAreaLimit</key>
<map>
<key>Comment</key>
- <string>Maximum surface area of attachments before an avatar is rendered as a simple impostor (0 to not use this limit).</string>
+ <string>Maximum surface area of attachments before an avatar is
+ rendered as a simple impostor (to not use this limit, set to zero
+ or set RenderAvatarMaxComplexity to zero).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>10.0E6</real>
+ <real>1000.0</real>
</map>
<key>RenderAutoMuteLogging</key>
<map>
diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml
index a333634fea..6b8956bf79 100755
--- a/indra/newview/app_settings/ultra_graphics.xml
+++ b/indra/newview/app_settings/ultra_graphics.xml
@@ -30,7 +30,7 @@
based on default graphics setting -->
<RenderAvatarMaxNonImpostors value="0"/>
<RenderAvatarMaxComplexity value="0"/>
- <RenderAutoMuteSurfaceAreaLimit value="10.0E6"/>
+ <RenderAutoMuteSurfaceAreaLimit value="1500.0"/>
<!--Default for now-->
<RenderVolumeLODFactor value="2.0"/>
<!--NO SHADERS-->
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 3b58b943cf..222a992f03 100755
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -34,8 +34,7 @@ RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
RenderAvatarVP 1 1
-RenderAutoMuteByteLimit 1 10000000
-RenderAutoMuteSurfaceAreaLimit 1 1.0E6
+RenderAutoMuteSurfaceAreaLimit 1 1000.0
RenderCubeMap 1 1
RenderDelayVBUpdate 1 0
RenderFarClip 1 256
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 024aab83dd..f46de50ef6 100755
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -34,8 +34,7 @@ RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 12
RenderAvatarMaxComplexity 1 60000
RenderAvatarVP 1 1
-RenderAutoMuteByteLimit 1 10000000
-RenderAutoMuteSurfaceAreaLimit 1 1.0E6
+RenderAutoMuteSurfaceAreaLimit 1 1000.0
RenderCubeMap 1 1
RenderDelayVBUpdate 1 0
RenderFarClip 1 256
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index c3c18f7c54..9c1e95803b 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6522,10 +6522,14 @@ bool LLVOAvatar::isTooComplex() const
{
// Determine if visually muted or not
static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAvatarMaxComplexity", 0U);
- static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit", 10.0E6f);
- too_complex = ((max_render_cost > 0 && mVisualComplexity > max_render_cost)
- || (max_attachment_area > 0.0f && mAttachmentSurfaceArea > max_attachment_area)
- );
+ static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit", 1000.0f);
+ // If the user has chosen unlimited max complexity, we also disregard max attachment area
+ // so that unlimited will completely disable the overly complex impostor rendering
+ // yes, this leaves them vulnerable to griefing objects... their choice
+ too_complex = ( max_render_cost > 0
+ && ( mVisualComplexity > max_render_cost
+ || (max_attachment_area > 0.0f && mAttachmentSurfaceArea > max_attachment_area)
+ ));
}
return too_complex;
@@ -8282,10 +8286,10 @@ void LLVOAvatar::idleUpdateRenderComplexity()
mText->addLine(info_line, info_color, info_style);
// Attachment Surface Area
- static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit", 10.0E6f);
+ static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit", 1000.0f);
info_line = llformat("%.2f m^2", mAttachmentSurfaceArea);
- if (max_attachment_area != 0) // zero means don't care, so don't bother coloring based on this
+ if (max_render_cost != 0 && max_attachment_area != 0) // zero means don't care, so don't bother coloring based on this
{
green_level = 1.f-llclamp((mAttachmentSurfaceArea-max_attachment_area)/max_attachment_area, 0.f, 1.f);
red_level = llmin(mAttachmentSurfaceArea/max_attachment_area, 1.f);
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index f7992dba90..ab87f0da35 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -28,6 +28,7 @@ $/LicenseInfo$
"""
import sys
import os.path
+import shutil
import errno
import re
import tarfile
@@ -855,14 +856,17 @@ class Darwin_i386_Manifest(ViewerManifest):
# This code constructs a relative path from the
# target framework folder back to the location of the symlink.
# It needs to be relative so that the symlink still works when
- # (as is normal) the user moves the app bunlde out of the DMG
+ # (as is normal) the user moves the app bundle out of the DMG
# and into the /Applications folder. Note we also call 'raise'
# to terminate the process if we get an error since without
# this symlink, Second Life web media can't possibly work.
# Real Framework folder:
# Second Life.app/Contents/Frameworks/Chromium Embedded Framework.framework/
- # Location of symlink and why it'ds relavie
+ # Location of symlink and why it'ds relative
# Second Life.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework/
+ # Real Frameworks folder, with the symlink inside the bundled SLPlugin.app (and why it's relative)
+ # <top level>.app/Contents/Frameworks/Chromium Embedded Framework.framework/
+ # <top level>.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework ->
frameworkpath = os.path.join(os.pardir, os.pardir, os.pardir, os.pardir, "Frameworks", "Chromium Embedded Framework.framework")
try:
symlinkf(frameworkpath, pluginframeworkpath)
@@ -872,10 +876,6 @@ class Darwin_i386_Manifest(ViewerManifest):
self.end_prefix("Contents")
- # fix up media_plugin.dylib so it knows where to look for CEF files it needs
- self.run_command('install_name_tool -change "@executable_path/Chromium Embedded Framework" "@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" "%(config)s/Second Life.app/Contents/Resources/llplugin/media_plugin_cef.dylib"' %
- { 'config' : self.args['configuration'] })
-
# NOTE: the -S argument to strip causes it to keep enough info for
# annotated backtraces (i.e. function names in the crash log). 'strip' with no
# arguments yields a slightly smaller binary but makes crash logs mostly useless.
@@ -1247,12 +1247,33 @@ def symlinkf(src, dst):
# file, but that strategy doesn't work so well if we don't have
# permissions to remove it. Check to see if it's already the
# symlink we want, which is the usual reason for EEXIST.
- if not (os.path.islink(dst) and os.readlink(dst) == src):
- # Here either dst isn't a symlink or it's the wrong symlink.
- # Remove and recreate. Caller will just have to deal with any
- # exceptions at this stage.
+ elif os.path.islink(dst):
+ if os.readlink(dst) == src:
+ # the requested link already exists
+ pass
+ else:
+ # dst is the wrong symlink; attempt to remove and recreate it
+ os.remove(dst)
+ os.symlink(src, dst)
+ elif os.path.isdir(dst):
+ print "Requested symlink (%s) exists but is a directory; replacing" % dst
+ shutil.rmtree(dst)
+ os.symlink(src, dst)
+ elif os.path.exists(dst):
+ print "Requested symlink (%s) exists but is a file; replacing" % dst
os.remove(dst)
os.symlink(src, dst)
+ else:
+ # see if the problem is that the parent directory does not exist
+ # and try to explain what is missing
+ (parent, tail) = os.path.split(dst)
+ while not os.path.exists(parent):
+ (parent, tail) = os.path.split(parent)
+ if tail:
+ raise Exception("Requested symlink (%s) cannot be created because %s does not exist"
+ % os.path.join(parent, tail))
+ else:
+ raise
if __name__ == "__main__":
main()