diff options
| -rwxr-xr-x | BuildParams | 9 | ||||
| -rwxr-xr-x | autobuild.xml | 8 | ||||
| -rwxr-xr-x | indra/llcorehttp/CMakeLists.txt | 37 | ||||
| -rw-r--r-- | indra/media_plugins/cef/CMakeLists.txt | 8 | ||||
| -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 | 
13 files changed, 103 insertions, 36 deletions
| diff --git a/BuildParams b/BuildParams index 15fb56ec17..aeea3b1246 100755 --- a/BuildParams +++ b/BuildParams @@ -70,15 +70,12 @@ additional_packages = ""  # the viewer_channel_suffix is prefixed by a blank and then appended to the viewer_channel  # for the package in a setting that overrides the compiled-in value  ################################################################ -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City -## additional_packages = "EDU" +additional_packages = "EDU"  # The EDU package allows us to create a separate release channel whose expirations  # are synchronized as much as possible with the academic year -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City -## EDU_sourceid = "" -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City -## EDU_viewer_channel_suffix = "edu" +EDU_sourceid = "" +EDU_viewer_channel_suffix = "edu"  # Notifications - to configure email notices, add a setting like this:  # <username>_<reponame>.email = <email-address> diff --git a/autobuild.xml b/autobuild.xml index 72f55fce1d..91fea28487 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -1536,11 +1536,11 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>6b9eaaf83fcf8bfd4bb6966c24df7f29</string> +              <string>29a1f64df46094eda0d681821a98d17e</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/310043/arch/Darwin/installer/llceflib-1.5.1.310043-darwin-310043.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/311349/arch/Darwin/installer/llceflib-1.5.3.311349-darwin-311349.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string> @@ -1550,11 +1550,11 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>578f21be02efc98bbf426529f916fce8</string> +              <string>827b7c339a2cd401d9d23f9ee02cb83f</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/310043/arch/CYGWIN/installer/llceflib-1.5.1.310043-windows-310043.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/311349/arch/CYGWIN/installer/llceflib-1.5.3.311349-windows-311349.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt index a0b1ea13b1..8567254147 100755 --- a/indra/llcorehttp/CMakeLists.txt +++ b/indra/llcorehttp/CMakeLists.txt @@ -141,6 +141,43 @@ if (LL_TESTS)                            "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llcorehttp_peer.py"                            ) +if (DARWIN) +  # Path inside the app bundle where we'll need to copy libraries +  set(LL_TEST_DESTINATION_DIR +    ${CMAKE_SOURCE_DIR}/../build-darwin-i386/sharedlibs/Resources +  ) + +  # Create the Contents/Resources directory +  add_custom_command( +    TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD +    COMMAND ${CMAKE_COMMAND} +    ARGS +      -E +      make_directory +      ${LL_TEST_DESTINATION_DIR} +    COMMENT "Creating Resources directory in app bundle." +  ) +   +  # Copy the required libraries to the package app +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib ${LL_TEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib +  ) +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib ${LL_TEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib +  ) +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib ${LL_TEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib +  ) +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib ${LL_TEST_DESTINATION_DIR} +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib +  ) + +endif (DARWIN) +    #    # Example Programs    # diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 1f6163e41e..388030c979 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -114,4 +114,12 @@ if (DARWIN)      LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"    ) +  add_custom_command(TARGET media_plugin_cef +    POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework" +        "@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" +        "$<TARGET_FILE:media_plugin_cef>" +    VERBATIM +    COMMENT "Fixing path to CEF Framework" +  ) +  endif (DARWIN) 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() | 
