diff options
Diffstat (limited to 'indra/newview')
-rwxr-xr-x | indra/newview/app_settings/high_graphics.xml | 2 | ||||
-rwxr-xr-x | indra/newview/app_settings/low_graphics.xml | 2 | ||||
-rwxr-xr-x | indra/newview/app_settings/mid_graphics.xml | 2 | ||||
-rwxr-xr-x | indra/newview/app_settings/settings.xml | 6 | ||||
-rwxr-xr-x | indra/newview/app_settings/ultra_graphics.xml | 2 | ||||
-rwxr-xr-x | indra/newview/featuretable.txt | 3 | ||||
-rwxr-xr-x | indra/newview/featuretable_mac.txt | 3 | ||||
-rwxr-xr-x | indra/newview/llvoavatar.cpp | 16 | ||||
-rwxr-xr-x | indra/newview/viewer_manifest.py | 41 |
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() |