diff options
171 files changed, 3605 insertions, 1754 deletions
| @@ -51,3 +51,22 @@ a82e5b1e22c7f90e3c7977d146b80588f004ed0d 2.5.0-start  345b17e7cf630db77e840b4fe3451bd476d750a3 2.5.0-beta1  345b17e7cf630db77e840b4fe3451bd476d750a3 76f586a8e22b  0000000000000000000000000000000000000000 76f586a8e22b +54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f 2.5.0-beta2 +7076e22f9f43f479a4ea75eac447a36364bead5a DRTVWR-5_2.2.0-beta1 +9822eb3e25f7fe0c28ffd8aba45c507caa383cbc DRTVWR-3_2.2.0-beta2 +b0cd7e150009809a0b5b0a9d5785cd4bb230413a DRTVWR-7_2.2.0-beta3 +1415e6538d54fd5d568ee88343424d57c6803c2c DRTVWR-8_2.2.0-release +a3c12342b1af0951b8aa3b828aacef17fcea8178 DRTVWR-14_2.3.0-beta1 +db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2 +6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-20_2.3.0-beta3 +6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-13_2.3.0-release +3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e DRTVWR-26_2.4.0-beta1 +25bd6007e3d2fc15db9326ed4b18a24a5969a46a DRTVWR-27_2.4.0-beta2 +1ed382c6a08ba3850b6ce9061bc551ddece0ea07 DRTVWR-25_2.4.0-release +345b17e7cf630db77e840b4fe3451bd476d750a3 DRTVWR-32_2.5.0-beta1 +54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2 +b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3 +b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3 +b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-release +b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-31_2.5.0-release +92e58e51776a4f8c29069b1a62ff21454d2085f0 2.6.0-start diff --git a/BuildParams b/BuildParams index 4e0d639b74..26ca976b74 100644 --- a/BuildParams +++ b/BuildParams @@ -26,6 +26,7 @@ viewer-development.show_changes_since = last_sprint  # Build Settings  viewer-development_coverity.coverity_product = viewer +viewer-development_coverity.run_tests = false  viewer-development.build_debug_release_separately = true  # Notifications - to configure email notices, add a setting like this: @@ -143,8 +144,8 @@ media.build_viewer_update_version_manager = false  # oz  # ================ -oz_viewer-autobuild2010.build_link_parallel = false -oz_viewer-vs2010.build_link_parallel = false +L-oz_viewer-autobuild.build_link_parallel=false +L-oz_viewer-autobuildvs2010.build_link_parallel=false  # ========================================  # enus diff --git a/autobuild.xml b/autobuild.xml index 179ba47711..81eb6943d2 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1587,22 +1587,172 @@                </map>                <key>configure</key>                <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array>                  <key>command</key>                  <string>cmake</string>                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=Debug</string> -                  <string>-DSTANDALONE:BOOL=OFF</string>                    <string>-DUNATTENDED:BOOL=OFF</string>                    <string>-DWORD_SIZE:STRING=32</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> -                  <string>-DFMOD=TRUE</string> -                  <string>-DINSTALL_PROPRIETARY=TRUE</string>                  </array>                </map>                <key>name</key>                <string>Debug</string>              </map> +            <key>OpenSourceDebug</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=Debug</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceDebug</string> +            </map> +            <key>OpenSourceRelWithDebInfo</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelWithDebInfo</string> +            </map> +            <!-- OPEN-1 WORKAROUND begin - to be removed when VC express is detected correctly --> +            <key>VCexpressRelWithDebInfo</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>VCexpressRelWithDebInfo</string> +            </map> +            <!-- OPEN-1 WORKAROUND end --> +            <key>OpenSourceRelease</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=Release</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelease</string> +            </map> +            <key>OpenSourceStandAloneDebug</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=Debug</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneDebug</string> +            </map> +            <key>OpenSourceStandAloneRelWithDebInfo</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelWithDebInfo</string> +            </map> +            <key>OpenSourceStandAloneRelease</key> +            <map> +              <key>configure</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array> +                <key>command</key> +                <string>cmake</string> +                <key>options</key> +                <array> +                  <string>-DCMAKE_BUILD_TYPE:STRING=Release</string> +                  <string>-DUNATTENDED:BOOL=OFF</string> +                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelease</string> +            </map>              <key>RelWithDebInfo</key>              <map>                <key>build</key> @@ -1610,17 +1760,18 @@                </map>                <key>configure</key>                <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array>                  <key>command</key>                  <string>cmake</string>                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string> -                  <string>-DSTANDALONE:BOOL=OFF</string>                    <string>-DUNATTENDED:BOOL=OFF</string>                    <string>-DWORD_SIZE:STRING=32</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> -                  <string>-DFMOD=TRUE</string> -                  <string>-DINSTALL_PROPRIETARY=TRUE</string>                  </array>                </map>                <key>name</key> @@ -1633,17 +1784,18 @@                </map>                <key>configure</key>                <map> +                <key>arguments</key> +                <array> +                  <string>../indra</string> +                </array>                  <key>command</key>                  <string>cmake</string>                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=Release</string> -                  <string>-DSTANDALONE:BOOL=OFF</string>                    <string>-DUNATTENDED:BOOL=OFF</string>                    <string>-DWORD_SIZE:STRING=32</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string> -                  <string>-DFMOD=TRUE</string> -                  <string>-DINSTALL_PROPRIETARY=TRUE</string>                  </array>                </map>                <key>name</key> @@ -1680,18 +1832,173 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> +                <key>options</key>                  <array> -                  <string>../indra</string> +                  <string>-G</string> +                  <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string> +                </array> +              </map> +              <key>name</key> +              <string>Debug</string> +            </map> +            <key>OpenSourceDebug</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>xcodebuild</string> +                <key>options</key> +                <array> +                  <string>-configuration Debug</string> +                  <string>-project SecondLife.xcodeproj</string>                  </array> +              </map> +              <key>configure</key> +              <map>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string>                  </array>                </map>                <key>name</key> -              <string>Debug</string> +              <string>OpenSourceDebug</string> +            </map> +            <key>OpenSourceRelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>xcodebuild</string> +                <key>options</key> +                <array> +                  <string>-configuration RelWithDebInfo</string> +                  <string>-project SecondLife.xcodeproj</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelWithDebInfo</string> +            </map> +            <key>OpenSourceRelease</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>xcodebuild</string> +                <key>options</key> +                <array> +                  <string>-configuration Release</string> +                  <string>-project SecondLife.xcodeproj</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelease</string> +            </map> +            <key>OpenSourceStandAloneDebug</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>xcodebuild</string> +                <key>options</key> +                <array> +                  <string>-configuration Debug</string> +                  <string>-project SecondLife.xcodeproj</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneDebug</string> +            </map> +            <key>OpenSourceStandAloneRelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>xcodebuild</string> +                <key>options</key> +                <array> +                  <string>-configuration RelWithDebInfo</string> +                  <string>-project SecondLife.xcodeproj</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelWithDebInfo</string> +            </map> +            <key>OpenSourceStandAloneRelease</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>xcodebuild</string> +                <key>options</key> +                <array> +                  <string>-configuration Release</string> +                  <string>-project SecondLife.xcodeproj</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelease</string>              </map>              <key>RelWithDebInfo</key>              <map> @@ -1714,14 +2021,13 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> -                <array> -                  <string>../indra</string> -                </array>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array>                </map>                <key>default</key> @@ -1750,14 +2056,13 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> -                <array> -                  <string>../indra</string> -                </array>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>'Xcode'</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array>                </map>                <key>name</key> @@ -1786,20 +2091,44 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> +                <key>options</key>                  <array> -                  <string>../indra</string> +                  <string>-G</string> +                  <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array> +              </map> +              <key>name</key> +              <string>Debug</string> +            </map> +            <key>OpenSourceDebug</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>make</string> +                <key>options</key> +                <array> +                  <string>-j 12</string> +                </array> +              </map> +              <key>configure</key> +              <map>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string>                  </array>                </map>                <key>name</key> -              <string>Debug</string> +              <string>OpenSourceDebug</string>              </map> -            <key>RelWithDebInfo</key> +            <key>OpenSourceRelWithDebInfo</key>              <map>                <key>build</key>                <map> @@ -1812,14 +2141,138 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> +                <key>options</key>                  <array> -                  <string>../indra</string> +                  <string>-G</string> +                  <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelWithDebInfo</string> +            </map> +            <key>OpenSourceRelease</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>make</string> +                <key>options</key> +                <array> +                  <string>-j 12</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelease</string> +            </map> +            <key>OpenSourceStandAloneDebug</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>make</string> +                <key>options</key> +                <array> +                  <string>-j 12</string>                  </array> +              </map> +              <key>configure</key> +              <map>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneDebug</string> +            </map> +            <key>OpenSourceStandAloneRelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>make</string> +                <key>options</key> +                <array> +                  <string>-j 12</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelWithDebInfo</string> +            </map> +            <key>OpenSourceStandAloneRelease</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>make</string> +                <key>options</key> +                <array> +                  <string>-j 12</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelease</string> +            </map> +            <key>RelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>command</key> +                <string>make</string> +                <key>options</key> +                <array> +                  <string>-j 12</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array>                </map>                <key>default</key> @@ -1840,14 +2293,13 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> -                <array> -                  <string>../indra</string> -                </array>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>'Unix Makefiles'</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array>                </map>                <key>name</key> @@ -1889,20 +2341,111 @@                </map>                <key>configure</key>                <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string> +                </array> +              </map> +              <key>name</key> +              <string>Debug</string> +            </map> +            <key>OpenSourceDebug</key> +            <map> +              <key>build</key> +              <map>                  <key>arguments</key>                  <array> -                  <string>..\indra</string> +                  <string>SecondLife.sln</string>                  </array> +                <key>command</key> +                <string>devenv.com</string> +                <key>options</key> +                <array> +                  <string>/build</string> +                  <string>Debug</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceDebug</string> +            </map> +            <key>OpenSourceRelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>SecondLife.sln</string> +                </array> +                <key>command</key> +                <string>devenv.com</string> +                <key>options</key> +                <array> +                  <string>/build</string> +                  <string>RelWithDebInfo</string> +                </array> +              </map> +              <key>configure</key> +              <map>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>"Visual Studio 10"</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string>                  </array>                </map>                <key>name</key> -              <string>Debug</string> +              <string>OpenSourceRelWithDebInfo</string>              </map> -            <key>RelWithDebInfo</key> +            <!-- OPEN-1 WORKAROUND begin - to be removed when VC express is detected correctly --> +            <key>VCexpressRelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>"RelWithDebInfo|Win32"</string> +                </array> +                <key>command</key> +                <string>vcbuild.exe</string> +                <key>options</key> +                <array> +                  <string>/u</string> +                  <string>SecondLife.sln</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>VCexpressRelWithDebInfo</string> +            </map> +            <!-- OPEN-1 WORKAROUND end --> +            <key>OpenSourceRelease</key>              <map>                <key>build</key>                <map> @@ -1911,23 +2454,142 @@                    <string>SecondLife.sln</string>                  </array>                  <key>command</key> -                <string>BuildConsole</string> +                <string>devenv.com</string>                  <key>options</key>                  <array>                    <string>/build</string> -                  <string>"/cfg=RelWithDebInfo|Win32"</string> +                  <string>Release</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=FALSE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceRelease</string> +            </map> +            <key>OpenSourceStandAloneDebug</key> +            <map> +              <key>build</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>SecondLife.sln</string> +                </array> +                <key>command</key> +                <string>devenv.com</string> +                <key>options</key> +                <array> +                  <string>/build</string> +                  <string>Debug</string>                  </array>                </map>                <key>configure</key>                <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneDebug</string> +            </map> +            <key>OpenSourceStandAloneRelWithDebInfo</key> +            <map> +              <key>build</key> +              <map>                  <key>arguments</key>                  <array> -                  <string>..\indra</string> +                  <string>SecondLife.sln</string>                  </array> +                <key>command</key> +                <string>devenv.com</string> +                <key>options</key> +                <array> +                  <string>/build</string> +                  <string>RelWithDebInfo</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelWithDebInfo</string> +            </map> +            <key>OpenSourceStandAloneRelease</key> +            <map> +              <key>build</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>SecondLife.sln</string> +                </array> +                <key>command</key> +                <string>devenv.com</string> +                <key>options</key> +                <array> +                  <string>/build</string> +                  <string>Release</string> +                </array> +              </map> +              <key>configure</key> +              <map> +                <key>options</key> +                <array> +                  <string>-G</string> +                  <string>"Visual Studio 8 2005"</string> +                  <string>-DSTANDALONE:BOOL=TRUE</string> +                  <string>-DINSTALL_PROPRIETARY=FALSE</string> +                  <string>-DFMOD=FALSE</string> +                </array> +              </map> +              <key>name</key> +              <string>OpenSourceStandAloneRelease</string> +            </map> +            <key>RelWithDebInfo</key> +            <map> +              <key>build</key> +              <map> +                <key>arguments</key> +                <array> +                  <string>SecondLife.sln</string> +                </array> +                <key>command</key> +                <string>BuildConsole</string> +                <key>options</key> +                <array> +                  <string>/build</string> +                  <string>"/cfg=RelWithDebInfo|Win32"</string> +                </array> +              </map> +              <key>configure</key> +              <map>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>"Visual Studio 10"</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array>                </map>                <key>default</key> @@ -1953,14 +2615,13 @@                </map>                <key>configure</key>                <map> -                <key>arguments</key> -                <array> -                  <string>..\indra</string> -                </array>                  <key>options</key>                  <array>                    <string>-G</string>                    <string>"Visual Studio 10"</string> +                  <string>-DSTANDALONE:BOOL=OFF</string> +                  <string>-DINSTALL_PROPRIETARY=TRUE</string> +                  <string>-DFMOD=TRUE</string>                  </array>                </map>                <key>name</key> diff --git a/doc/contributions.txt b/doc/contributions.txt index 4e91bbdd36..c80bc631bc 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -66,6 +66,7 @@ Aleric Inglewood  	SNOW-626  	SNOW-756  	SNOW-764 +	SNOW-800  	VWR-10001  	VWR-10579  	VWR-10759 @@ -85,17 +86,21 @@ Aleric Inglewood  	VWR-24320      VWR-24321   	VWR-24354 +	VWR-24366  	VWR-24519  	SNOW-84  	SNOW-477  	SNOW-744  	SNOW-766  	STORM-163 +	STORM-955 +	STORM-960  Ales Beaumont  	VWR-9352  	SNOW-240  Alexandrea Fride      STORM-255 +	STORM-960  Alissa Sabre  	VWR-81  	VWR-83 @@ -373,20 +378,28 @@ JB Kraft  Joghert LeSabre  	VWR-64  Jonathan Yap +	STORM-435  	STORM-523  	STORM-596  	STORM-615  	STORM-616 +	STORM-643  	STORM-679  	STORM-723  	STORM-726  	STORM-737 -	STORM-869  	STORM-785  	STORM-812 +	STORM-829 +	STORM-844 +	STORM-869  	VWR-17801  	VWR-24347  	STORM-844 +	STORM-975 +	STORM-643 +	STORM-960 +	STORM-953  Kage Pixel  	VWR-11  Ken March @@ -614,6 +627,7 @@ Robin Cornelius  	SNOW-599  	SNOW-747  	STORM-422 +	STORM-960  	VWR-2488  	VWR-9557  	VWR-10579 @@ -662,6 +676,8 @@ Sergen Davies  	CT-321  Shawn Kaufmat  	SNOW-240 +Siana Gearz +	STORM-960  SignpostMarv Martin  	VWR-153  	VWR-154 @@ -769,6 +785,7 @@ Twisted Laws  	STORM-466  	STORM-467  	STORM-844 +	STORM-643  Vadim Bigbear  	VWR-2681  Vector Hastings diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake index ca5a8034ba..06d6d847a0 100644 --- a/indra/cmake/GoogleMock.cmake +++ b/indra/cmake/GoogleMock.cmake @@ -8,9 +8,10 @@ set(GOOGLEMOCK_INCLUDE_DIRS      ${LIBS_PREBUILT_DIR}/include)  if (LINUX) +	# VWR-24366: gmock is underlinked, it needs gtest.      set(GOOGLEMOCK_LIBRARIES  -        gmock   -        gtest) +        gmock -Wl,--no-as-needed +        gtest -Wl,--as-needed)  elseif(WINDOWS)      set(GOOGLEMOCK_LIBRARIES           gmock) diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 05f0492234..cd0eada2d0 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -57,11 +57,6 @@ INCLUDE(GoogleMock)      ${CMAKE_SOURCE_DIR}/test/test.h      ) -  # Use the default flags -  if (LINUX) -    SET(CMAKE_EXE_LINKER_FLAGS "") -  endif (LINUX) -    # start the source test executable definitions    SET(${project}_TEST_OUTPUT "")    FOREACH (source ${sources}) diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 37aa75e364..320a9be8ab 100755 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   run_build_test.py  @author Nat Goodspeed diff --git a/indra/copy_win_scripts/start-client.py b/indra/copy_win_scripts/start-client.py index 5f7ff2f293..5699f5273f 100644 --- a/indra/copy_win_scripts/start-client.py +++ b/indra/copy_win_scripts/start-client.py @@ -1,4 +1,28 @@  #!/usr/bin/env python +"""\ +@file   start-client.py + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import sys, getopt  import os  import llstart diff --git a/indra/lib/python/indra/util/llperformance.py b/indra/lib/python/indra/util/llperformance.py index 7c52730b5e..57dd64de3f 100755 --- a/indra/lib/python/indra/util/llperformance.py +++ b/indra/lib/python/indra/util/llperformance.py @@ -1,4 +1,28 @@ -#!/usr/bin/python +#!/usr/bin/env python +"""\ +@file   llperformance.py + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  # ------------------------------------------------  # Sim metrics utility functions. diff --git a/indra/lib/python/indra/util/simperf_proc_interface.py b/indra/lib/python/indra/util/simperf_proc_interface.py index da6304a274..de061f68cc 100755 --- a/indra/lib/python/indra/util/simperf_proc_interface.py +++ b/indra/lib/python/indra/util/simperf_proc_interface.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file simperf_proc_interface.py  @brief Utility to extract log messages from *.<pid>.llsd files containing performance statistics. diff --git a/indra/lib/python/indra/util/test_win32_manifest.py b/indra/lib/python/indra/util/test_win32_manifest.py index da8ee6c545..0532cb0065 100644 --- a/indra/lib/python/indra/util/test_win32_manifest.py +++ b/indra/lib/python/indra/util/test_win32_manifest.py @@ -1,28 +1,29 @@  #!/usr/bin/env python -# @file test_win32_manifest.py -# @brief Test an assembly binding version and uniqueness in a windows dll or exe.   -# -# $LicenseInfo:firstyear=2009&license=viewerlgpl$ -# Second Life Viewer Source Code -# Copyright (C) 2010, Linden Research, Inc. -#  -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; -# version 2.1 of the License only. -#  -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -# Lesser General Public License for more details. -#  -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -#  -# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -# $/LicenseInfo$ - +"""\ +@file test_win32_manifest.py +@brief Test an assembly binding version and uniqueness in a windows dll or exe.   + +$LicenseInfo:firstyear=2009&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2009-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import sys, os  import tempfile  from xml.dom.minidom import parse diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp index a30113a478..155226cf17 100644 --- a/indra/llcharacter/llanimationstates.cpp +++ b/indra/llcharacter/llanimationstates.cpp @@ -33,145 +33,145 @@  #include "llanimationstates.h"  #include "llstring.h" -const LLUUID ANIM_AGENT_AFRAID				= LLUUID("6b61c8e8-4747-0d75-12d7-e49ff207a4ca"); -const LLUUID ANIM_AGENT_AIM_BAZOOKA_R		= LLUUID("b5b4a67d-0aee-30d2-72cd-77b333e932ef"); -const LLUUID ANIM_AGENT_AIM_BOW_L			= LLUUID("46bb4359-de38-4ed8-6a22-f1f52fe8f506"); -const LLUUID ANIM_AGENT_AIM_HANDGUN_R		= LLUUID("3147d815-6338-b932-f011-16b56d9ac18b"); -const LLUUID ANIM_AGENT_AIM_RIFLE_R			= LLUUID("ea633413-8006-180a-c3ba-96dd1d756720"); -const LLUUID ANIM_AGENT_ANGRY				= LLUUID("5747a48e-073e-c331-f6f3-7c2149613d3e"); -const LLUUID ANIM_AGENT_AWAY				= LLUUID("fd037134-85d4-f241-72c6-4f42164fedee"); -const LLUUID ANIM_AGENT_BACKFLIP			= LLUUID("c4ca6188-9127-4f31-0158-23c4e2f93304"); -const LLUUID ANIM_AGENT_BELLY_LAUGH			= LLUUID("18b3a4b5-b463-bd48-e4b6-71eaac76c515"); -const LLUUID ANIM_AGENT_BLOW_KISS			= LLUUID("db84829b-462c-ee83-1e27-9bbee66bd624"); -const LLUUID ANIM_AGENT_BORED				= LLUUID("b906c4ba-703b-1940-32a3-0c7f7d791510"); -const LLUUID ANIM_AGENT_BOW					= LLUUID("82e99230-c906-1403-4d9c-3889dd98daba"); -const LLUUID ANIM_AGENT_BRUSH				= LLUUID("349a3801-54f9-bf2c-3bd0-1ac89772af01"); -const LLUUID ANIM_AGENT_BUSY				= LLUUID("efcf670c-2d18-8128-973a-034ebc806b67"); -const LLUUID ANIM_AGENT_CLAP				= LLUUID("9b0c1c4e-8ac7-7969-1494-28c874c4f668"); -const LLUUID ANIM_AGENT_COURTBOW			= LLUUID("9ba1c942-08be-e43a-fb29-16ad440efc50"); -const LLUUID ANIM_AGENT_CROUCH				= LLUUID("201f3fdf-cb1f-dbec-201f-7333e328ae7c"); -const LLUUID ANIM_AGENT_CROUCHWALK			= LLUUID("47f5f6fb-22e5-ae44-f871-73aaaf4a6022"); -const LLUUID ANIM_AGENT_CRY					= LLUUID("92624d3e-1068-f1aa-a5ec-8244585193ed"); -const LLUUID ANIM_AGENT_CUSTOMIZE	 		= LLUUID("038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"); -const LLUUID ANIM_AGENT_CUSTOMIZE_DONE		= LLUUID("6883a61a-b27b-5914-a61e-dda118a9ee2c"); -const LLUUID ANIM_AGENT_DANCE1				= LLUUID("b68a3d7c-de9e-fc87-eec8-543d787e5b0d"); -const LLUUID ANIM_AGENT_DANCE2				= LLUUID("928cae18-e31d-76fd-9cc9-2f55160ff818"); -const LLUUID ANIM_AGENT_DANCE3				= LLUUID("30047778-10ea-1af7-6881-4db7a3a5a114"); -const LLUUID ANIM_AGENT_DANCE4				= LLUUID("951469f4-c7b2-c818-9dee-ad7eea8c30b7"); -const LLUUID ANIM_AGENT_DANCE5				= LLUUID("4bd69a1d-1114-a0b4-625f-84e0a5237155"); -const LLUUID ANIM_AGENT_DANCE6				= LLUUID("cd28b69b-9c95-bb78-3f94-8d605ff1bb12"); -const LLUUID ANIM_AGENT_DANCE7				= LLUUID("a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"); -const LLUUID ANIM_AGENT_DANCE8				= LLUUID("b0dc417c-1f11-af36-2e80-7e7489fa7cdc"); -const LLUUID ANIM_AGENT_DEAD				= LLUUID("57abaae6-1d17-7b1b-5f98-6d11a6411276"); -const LLUUID ANIM_AGENT_DRINK				= LLUUID("0f86e355-dd31-a61c-fdb0-3a96b9aad05f"); -const LLUUID ANIM_AGENT_EMBARRASSED			= LLUUID("514af488-9051-044a-b3fc-d4dbf76377c6"); -const LLUUID ANIM_AGENT_EXPRESS_AFRAID		= LLUUID("aa2df84d-cf8f-7218-527b-424a52de766e"); -const LLUUID ANIM_AGENT_EXPRESS_ANGER		= LLUUID("1a03b575-9634-b62a-5767-3a679e81f4de"); -const LLUUID ANIM_AGENT_EXPRESS_BORED		= LLUUID("214aa6c1-ba6a-4578-f27c-ce7688f61d0d"); -const LLUUID ANIM_AGENT_EXPRESS_CRY			= LLUUID("d535471b-85bf-3b4d-a542-93bea4f59d33"); -const LLUUID ANIM_AGENT_EXPRESS_DISDAIN		= LLUUID("d4416ff1-09d3-300f-4183-1b68a19b9fc1"); -const LLUUID ANIM_AGENT_EXPRESS_EMBARRASSED = LLUUID("0b8c8211-d78c-33e8-fa28-c51a9594e424"); -const LLUUID ANIM_AGENT_EXPRESS_FROWN		= LLUUID("fee3df48-fa3d-1015-1e26-a205810e3001"); -const LLUUID ANIM_AGENT_EXPRESS_KISS		= LLUUID("1e8d90cc-a84e-e135-884c-7c82c8b03a14"); -const LLUUID ANIM_AGENT_EXPRESS_LAUGH		= LLUUID("62570842-0950-96f8-341c-809e65110823"); -const LLUUID ANIM_AGENT_EXPRESS_OPEN_MOUTH	= LLUUID("d63bc1f9-fc81-9625-a0c6-007176d82eb7"); -const LLUUID ANIM_AGENT_EXPRESS_REPULSED	= LLUUID("f76cda94-41d4-a229-2872-e0296e58afe1"); -const LLUUID ANIM_AGENT_EXPRESS_SAD			= LLUUID("eb6ebfb2-a4b3-a19c-d388-4dd5c03823f7"); -const LLUUID ANIM_AGENT_EXPRESS_SHRUG		= LLUUID("a351b1bc-cc94-aac2-7bea-a7e6ebad15ef"); -const LLUUID ANIM_AGENT_EXPRESS_SMILE		= LLUUID("b7c7c833-e3d3-c4e3-9fc0-131237446312"); -const LLUUID ANIM_AGENT_EXPRESS_SURPRISE	= LLUUID("728646d9-cc79-08b2-32d6-937f0a835c24"); -const LLUUID ANIM_AGENT_EXPRESS_TONGUE_OUT	= LLUUID("835965c6-7f2f-bda2-5deb-2478737f91bf"); -const LLUUID ANIM_AGENT_EXPRESS_TOOTHSMILE	= LLUUID("b92ec1a5-e7ce-a76b-2b05-bcdb9311417e"); -const LLUUID ANIM_AGENT_EXPRESS_WINK		= LLUUID("da020525-4d94-59d6-23d7-81fdebf33148"); -const LLUUID ANIM_AGENT_EXPRESS_WORRY		= LLUUID("9c05e5c7-6f07-6ca4-ed5a-b230390c3950"); -const LLUUID ANIM_AGENT_FALLDOWN			= LLUUID("666307d9-a860-572d-6fd4-c3ab8865c094"); -const LLUUID ANIM_AGENT_FEMALE_RUN_NEW		= LLUUID("85995026-eade-5d78-d364-94a64512cb66"); -const LLUUID ANIM_AGENT_FEMALE_WALK			= LLUUID("f5fc7433-043d-e819-8298-f519a119b688"); -const LLUUID ANIM_AGENT_FEMALE_WALK_NEW		= LLUUID("d60c41d2-7c24-7074-d3fa-6101cea22a51"); -const LLUUID ANIM_AGENT_FINGER_WAG			= LLUUID("c1bc7f36-3ba0-d844-f93c-93be945d644f"); -const LLUUID ANIM_AGENT_FIST_PUMP			= LLUUID("7db00ccd-f380-f3ee-439d-61968ec69c8a"); -const LLUUID ANIM_AGENT_FLY					= LLUUID("aec4610c-757f-bc4e-c092-c6e9caf18daf"); -const LLUUID ANIM_AGENT_FLYSLOW				= LLUUID("2b5a38b2-5e00-3a97-a495-4c826bc443e6"); -const LLUUID ANIM_AGENT_HELLO				= LLUUID("9b29cd61-c45b-5689-ded2-91756b8d76a9"); -const LLUUID ANIM_AGENT_HOLD_BAZOOKA_R		= LLUUID("ef62d355-c815-4816-2474-b1acc21094a6"); -const LLUUID ANIM_AGENT_HOLD_BOW_L			= LLUUID("8b102617-bcba-037b-86c1-b76219f90c88"); -const LLUUID ANIM_AGENT_HOLD_HANDGUN_R		= LLUUID("efdc1727-8b8a-c800-4077-975fc27ee2f2"); -const LLUUID ANIM_AGENT_HOLD_RIFLE_R		= LLUUID("3d94bad0-c55b-7dcc-8763-033c59405d33"); -const LLUUID ANIM_AGENT_HOLD_THROW_R		= LLUUID("7570c7b5-1f22-56dd-56ef-a9168241bbb6"); -const LLUUID ANIM_AGENT_HOVER				= LLUUID("4ae8016b-31b9-03bb-c401-b1ea941db41d"); -const LLUUID ANIM_AGENT_HOVER_DOWN			= LLUUID("20f063ea-8306-2562-0b07-5c853b37b31e"); -const LLUUID ANIM_AGENT_HOVER_UP			= LLUUID("62c5de58-cb33-5743-3d07-9e4cd4352864"); -const LLUUID ANIM_AGENT_IMPATIENT			= LLUUID("5ea3991f-c293-392e-6860-91dfa01278a3"); -const LLUUID ANIM_AGENT_JUMP				= LLUUID("2305bd75-1ca9-b03b-1faa-b176b8a8c49e"); -const LLUUID ANIM_AGENT_JUMP_FOR_JOY		= LLUUID("709ea28e-1573-c023-8bf8-520c8bc637fa"); -const LLUUID ANIM_AGENT_KISS_MY_BUTT		= LLUUID("19999406-3a3a-d58c-a2ac-d72e555dcf51"); -const LLUUID ANIM_AGENT_LAND				= LLUUID("7a17b059-12b2-41b1-570a-186368b6aa6f"); -const LLUUID ANIM_AGENT_LAUGH_SHORT			= LLUUID("ca5b3f14-3194-7a2b-c894-aa699b718d1f"); -const LLUUID ANIM_AGENT_MEDIUM_LAND			= LLUUID("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"); -const LLUUID ANIM_AGENT_MOTORCYCLE_SIT		= LLUUID("08464f78-3a8e-2944-cba5-0c94aff3af29"); -const LLUUID ANIM_AGENT_MUSCLE_BEACH		= LLUUID("315c3a41-a5f3-0ba4-27da-f893f769e69b"); -const LLUUID ANIM_AGENT_NO					= LLUUID("5a977ed9-7f72-44e9-4c4c-6e913df8ae74"); -const LLUUID ANIM_AGENT_NO_UNHAPPY			= LLUUID("d83fa0e5-97ed-7eb2-e798-7bd006215cb4"); -const LLUUID ANIM_AGENT_NYAH_NYAH			= LLUUID("f061723d-0a18-754f-66ee-29a44795a32f"); -const LLUUID ANIM_AGENT_ONETWO_PUNCH		= LLUUID("eefc79be-daae-a239-8c04-890f5d23654a"); -const LLUUID ANIM_AGENT_PEACE				= LLUUID("b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"); -const LLUUID ANIM_AGENT_POINT_ME			= LLUUID("17c024cc-eef2-f6a0-3527-9869876d7752"); -const LLUUID ANIM_AGENT_POINT_YOU			= LLUUID("ec952cca-61ef-aa3b-2789-4d1344f016de"); -const LLUUID ANIM_AGENT_PRE_JUMP			= LLUUID("7a4e87fe-de39-6fcb-6223-024b00893244"); -const LLUUID ANIM_AGENT_PUNCH_LEFT			= LLUUID("f3300ad9-3462-1d07-2044-0fef80062da0"); -const LLUUID ANIM_AGENT_PUNCH_RIGHT			= LLUUID("c8e42d32-7310-6906-c903-cab5d4a34656"); -const LLUUID ANIM_AGENT_REPULSED			= LLUUID("36f81a92-f076-5893-dc4b-7c3795e487cf"); -const LLUUID ANIM_AGENT_ROUNDHOUSE_KICK		= LLUUID("49aea43b-5ac3-8a44-b595-96100af0beda"); -const LLUUID ANIM_AGENT_RPS_COUNTDOWN		= LLUUID("35db4f7e-28c2-6679-cea9-3ee108f7fc7f"); -const LLUUID ANIM_AGENT_RPS_PAPER			= LLUUID("0836b67f-7f7b-f37b-c00a-460dc1521f5a"); -const LLUUID ANIM_AGENT_RPS_ROCK			= LLUUID("42dd95d5-0bc6-6392-f650-777304946c0f"); -const LLUUID ANIM_AGENT_RPS_SCISSORS		= LLUUID("16803a9f-5140-e042-4d7b-d28ba247c325"); -const LLUUID ANIM_AGENT_RUN					= LLUUID("05ddbff8-aaa9-92a1-2b74-8fe77a29b445"); -const LLUUID ANIM_AGENT_RUN_NEW				= LLUUID("1ab1b236-cd08-21e6-0cbc-0d923fc6eca2"); -const LLUUID ANIM_AGENT_SAD					= LLUUID("0eb702e2-cc5a-9a88-56a5-661a55c0676a"); -const LLUUID ANIM_AGENT_SALUTE				= LLUUID("cd7668a6-7011-d7e2-ead8-fc69eff1a104"); -const LLUUID ANIM_AGENT_SHOOT_BOW_L			= LLUUID("e04d450d-fdb5-0432-fd68-818aaf5935f8"); -const LLUUID ANIM_AGENT_SHOUT				= LLUUID("6bd01860-4ebd-127a-bb3d-d1427e8e0c42"); -const LLUUID ANIM_AGENT_SHRUG				= LLUUID("70ea714f-3a97-d742-1b01-590a8fcd1db5"); -const LLUUID ANIM_AGENT_SIT					= LLUUID("1a5fe8ac-a804-8a5d-7cbd-56bd83184568"); -const LLUUID ANIM_AGENT_SIT_FEMALE			= LLUUID("b1709c8d-ecd3-54a1-4f28-d55ac0840782"); -const LLUUID ANIM_AGENT_SIT_GENERIC			= LLUUID("245f3c54-f1c0-bf2e-811f-46d8eeb386e7"); -const LLUUID ANIM_AGENT_SIT_GROUND 			= LLUUID("1c7600d6-661f-b87b-efe2-d7421eb93c86"); -const LLUUID ANIM_AGENT_SIT_GROUND_CONSTRAINED	= LLUUID("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"); -const LLUUID ANIM_AGENT_SIT_TO_STAND		= LLUUID("a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"); -const LLUUID ANIM_AGENT_SLEEP				= LLUUID("f2bed5f9-9d44-39af-b0cd-257b2a17fe40"); -const LLUUID ANIM_AGENT_SMOKE_IDLE			= LLUUID("d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"); -const LLUUID ANIM_AGENT_SMOKE_INHALE		= LLUUID("6802d553-49da-0778-9f85-1599a2266526"); -const LLUUID ANIM_AGENT_SMOKE_THROW_DOWN	= LLUUID("0a9fb970-8b44-9114-d3a9-bf69cfe804d6"); -const LLUUID ANIM_AGENT_SNAPSHOT			= LLUUID("eae8905b-271a-99e2-4c0e-31106afd100c"); -const LLUUID ANIM_AGENT_STAND				= LLUUID("2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"); -const LLUUID ANIM_AGENT_STANDUP				= LLUUID("3da1d753-028a-5446-24f3-9c9b856d9422"); -const LLUUID ANIM_AGENT_STAND_1				= LLUUID("15468e00-3400-bb66-cecc-646d7c14458e"); -const LLUUID ANIM_AGENT_STAND_2				= LLUUID("370f3a20-6ca6-9971-848c-9a01bc42ae3c"); -const LLUUID ANIM_AGENT_STAND_3				= LLUUID("42b46214-4b44-79ae-deb8-0df61424ff4b"); -const LLUUID ANIM_AGENT_STAND_4				= LLUUID("f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"); -const LLUUID ANIM_AGENT_STRETCH				= LLUUID("80700431-74ec-a008-14f8-77575e73693f"); -const LLUUID ANIM_AGENT_STRIDE				= LLUUID("1cb562b0-ba21-2202-efb3-30f82cdf9595"); -const LLUUID ANIM_AGENT_SURF				= LLUUID("41426836-7437-7e89-025d-0aa4d10f1d69"); -const LLUUID ANIM_AGENT_SURPRISE			= LLUUID("313b9881-4302-73c0-c7d0-0e7a36b6c224"); -const LLUUID ANIM_AGENT_SWORD_STRIKE		= LLUUID("85428680-6bf9-3e64-b489-6f81087c24bd"); -const LLUUID ANIM_AGENT_TALK				= LLUUID("5c682a95-6da4-a463-0bf6-0f5b7be129d1"); -const LLUUID ANIM_AGENT_TANTRUM				= LLUUID("11000694-3f41-adc2-606b-eee1d66f3724"); -const LLUUID ANIM_AGENT_THROW_R				= LLUUID("aa134404-7dac-7aca-2cba-435f9db875ca"); -const LLUUID ANIM_AGENT_TRYON_SHIRT			= LLUUID("83ff59fe-2346-f236-9009-4e3608af64c1"); -const LLUUID ANIM_AGENT_TURNLEFT			= LLUUID("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"); -const LLUUID ANIM_AGENT_TURNRIGHT			= LLUUID("2d6daa51-3192-6794-8e2e-a15f8338ec30"); -const LLUUID ANIM_AGENT_TYPE				= LLUUID("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"); -const LLUUID ANIM_AGENT_WALK				= LLUUID("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"); -const LLUUID ANIM_AGENT_WALK_NEW			= LLUUID("33339176-7ddc-9397-94a4-bf3403cbc8f5"); -const LLUUID ANIM_AGENT_WHISPER				= LLUUID("7693f268-06c7-ea71-fa21-2b30d6533f8f"); -const LLUUID ANIM_AGENT_WHISTLE				= LLUUID("b1ed7982-c68e-a982-7561-52a88a5298c0"); -const LLUUID ANIM_AGENT_WINK				= LLUUID("869ecdad-a44b-671e-3266-56aef2e3ac2e"); -const LLUUID ANIM_AGENT_WINK_HOLLYWOOD		= LLUUID("c0c4030f-c02b-49de-24ba-2331f43fe41c"); -const LLUUID ANIM_AGENT_WORRY				= LLUUID("9f496bd2-589a-709f-16cc-69bf7df1d36c"); -const LLUUID ANIM_AGENT_YES					= LLUUID("15dd911d-be82-2856-26db-27659b142875"); -const LLUUID ANIM_AGENT_YES_HAPPY			= LLUUID("b8c8b2a3-9008-1771-3bfc-90924955ab2d"); -const LLUUID ANIM_AGENT_YOGA_FLOAT			= LLUUID("42ecd00b-9947-a97c-400a-bbc9174c7aeb"); +LLUUID const ANIM_AGENT_AFRAID                ("6b61c8e8-4747-0d75-12d7-e49ff207a4ca"); +LLUUID const ANIM_AGENT_AIM_BAZOOKA_R         ("b5b4a67d-0aee-30d2-72cd-77b333e932ef"); +LLUUID const ANIM_AGENT_AIM_BOW_L             ("46bb4359-de38-4ed8-6a22-f1f52fe8f506"); +LLUUID const ANIM_AGENT_AIM_HANDGUN_R         ("3147d815-6338-b932-f011-16b56d9ac18b"); +LLUUID const ANIM_AGENT_AIM_RIFLE_R           ("ea633413-8006-180a-c3ba-96dd1d756720"); +LLUUID const ANIM_AGENT_ANGRY                 ("5747a48e-073e-c331-f6f3-7c2149613d3e"); +LLUUID const ANIM_AGENT_AWAY                  ("fd037134-85d4-f241-72c6-4f42164fedee"); +LLUUID const ANIM_AGENT_BACKFLIP              ("c4ca6188-9127-4f31-0158-23c4e2f93304"); +LLUUID const ANIM_AGENT_BELLY_LAUGH           ("18b3a4b5-b463-bd48-e4b6-71eaac76c515"); +LLUUID const ANIM_AGENT_BLOW_KISS             ("db84829b-462c-ee83-1e27-9bbee66bd624"); +LLUUID const ANIM_AGENT_BORED                 ("b906c4ba-703b-1940-32a3-0c7f7d791510"); +LLUUID const ANIM_AGENT_BOW                   ("82e99230-c906-1403-4d9c-3889dd98daba"); +LLUUID const ANIM_AGENT_BRUSH                 ("349a3801-54f9-bf2c-3bd0-1ac89772af01"); +LLUUID const ANIM_AGENT_BUSY                  ("efcf670c-2d18-8128-973a-034ebc806b67"); +LLUUID const ANIM_AGENT_CLAP                  ("9b0c1c4e-8ac7-7969-1494-28c874c4f668"); +LLUUID const ANIM_AGENT_COURTBOW              ("9ba1c942-08be-e43a-fb29-16ad440efc50"); +LLUUID const ANIM_AGENT_CROUCH                ("201f3fdf-cb1f-dbec-201f-7333e328ae7c"); +LLUUID const ANIM_AGENT_CROUCHWALK            ("47f5f6fb-22e5-ae44-f871-73aaaf4a6022"); +LLUUID const ANIM_AGENT_CRY                   ("92624d3e-1068-f1aa-a5ec-8244585193ed"); +LLUUID const ANIM_AGENT_CUSTOMIZE             ("038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"); +LLUUID const ANIM_AGENT_CUSTOMIZE_DONE        ("6883a61a-b27b-5914-a61e-dda118a9ee2c"); +LLUUID const ANIM_AGENT_DANCE1                ("b68a3d7c-de9e-fc87-eec8-543d787e5b0d"); +LLUUID const ANIM_AGENT_DANCE2                ("928cae18-e31d-76fd-9cc9-2f55160ff818"); +LLUUID const ANIM_AGENT_DANCE3                ("30047778-10ea-1af7-6881-4db7a3a5a114"); +LLUUID const ANIM_AGENT_DANCE4                ("951469f4-c7b2-c818-9dee-ad7eea8c30b7"); +LLUUID const ANIM_AGENT_DANCE5                ("4bd69a1d-1114-a0b4-625f-84e0a5237155"); +LLUUID const ANIM_AGENT_DANCE6                ("cd28b69b-9c95-bb78-3f94-8d605ff1bb12"); +LLUUID const ANIM_AGENT_DANCE7                ("a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"); +LLUUID const ANIM_AGENT_DANCE8                ("b0dc417c-1f11-af36-2e80-7e7489fa7cdc"); +LLUUID const ANIM_AGENT_DEAD                  ("57abaae6-1d17-7b1b-5f98-6d11a6411276"); +LLUUID const ANIM_AGENT_DRINK                 ("0f86e355-dd31-a61c-fdb0-3a96b9aad05f"); +LLUUID const ANIM_AGENT_EMBARRASSED           ("514af488-9051-044a-b3fc-d4dbf76377c6"); +LLUUID const ANIM_AGENT_EXPRESS_AFRAID        ("aa2df84d-cf8f-7218-527b-424a52de766e"); +LLUUID const ANIM_AGENT_EXPRESS_ANGER         ("1a03b575-9634-b62a-5767-3a679e81f4de"); +LLUUID const ANIM_AGENT_EXPRESS_BORED         ("214aa6c1-ba6a-4578-f27c-ce7688f61d0d"); +LLUUID const ANIM_AGENT_EXPRESS_CRY           ("d535471b-85bf-3b4d-a542-93bea4f59d33"); +LLUUID const ANIM_AGENT_EXPRESS_DISDAIN       ("d4416ff1-09d3-300f-4183-1b68a19b9fc1"); +LLUUID const ANIM_AGENT_EXPRESS_EMBARRASSED   ("0b8c8211-d78c-33e8-fa28-c51a9594e424"); +LLUUID const ANIM_AGENT_EXPRESS_FROWN         ("fee3df48-fa3d-1015-1e26-a205810e3001"); +LLUUID const ANIM_AGENT_EXPRESS_KISS          ("1e8d90cc-a84e-e135-884c-7c82c8b03a14"); +LLUUID const ANIM_AGENT_EXPRESS_LAUGH         ("62570842-0950-96f8-341c-809e65110823"); +LLUUID const ANIM_AGENT_EXPRESS_OPEN_MOUTH    ("d63bc1f9-fc81-9625-a0c6-007176d82eb7"); +LLUUID const ANIM_AGENT_EXPRESS_REPULSED      ("f76cda94-41d4-a229-2872-e0296e58afe1"); +LLUUID const ANIM_AGENT_EXPRESS_SAD           ("eb6ebfb2-a4b3-a19c-d388-4dd5c03823f7"); +LLUUID const ANIM_AGENT_EXPRESS_SHRUG         ("a351b1bc-cc94-aac2-7bea-a7e6ebad15ef"); +LLUUID const ANIM_AGENT_EXPRESS_SMILE         ("b7c7c833-e3d3-c4e3-9fc0-131237446312"); +LLUUID const ANIM_AGENT_EXPRESS_SURPRISE      ("728646d9-cc79-08b2-32d6-937f0a835c24"); +LLUUID const ANIM_AGENT_EXPRESS_TONGUE_OUT    ("835965c6-7f2f-bda2-5deb-2478737f91bf"); +LLUUID const ANIM_AGENT_EXPRESS_TOOTHSMILE    ("b92ec1a5-e7ce-a76b-2b05-bcdb9311417e"); +LLUUID const ANIM_AGENT_EXPRESS_WINK          ("da020525-4d94-59d6-23d7-81fdebf33148"); +LLUUID const ANIM_AGENT_EXPRESS_WORRY         ("9c05e5c7-6f07-6ca4-ed5a-b230390c3950"); +LLUUID const ANIM_AGENT_FALLDOWN              ("666307d9-a860-572d-6fd4-c3ab8865c094"); +LLUUID const ANIM_AGENT_FEMALE_RUN_NEW        ("85995026-eade-5d78-d364-94a64512cb66"); +LLUUID const ANIM_AGENT_FEMALE_WALK           ("f5fc7433-043d-e819-8298-f519a119b688"); +LLUUID const ANIM_AGENT_FEMALE_WALK_NEW       ("d60c41d2-7c24-7074-d3fa-6101cea22a51"); +LLUUID const ANIM_AGENT_FINGER_WAG            ("c1bc7f36-3ba0-d844-f93c-93be945d644f"); +LLUUID const ANIM_AGENT_FIST_PUMP             ("7db00ccd-f380-f3ee-439d-61968ec69c8a"); +LLUUID const ANIM_AGENT_FLY                   ("aec4610c-757f-bc4e-c092-c6e9caf18daf"); +LLUUID const ANIM_AGENT_FLYSLOW               ("2b5a38b2-5e00-3a97-a495-4c826bc443e6"); +LLUUID const ANIM_AGENT_HELLO                 ("9b29cd61-c45b-5689-ded2-91756b8d76a9"); +LLUUID const ANIM_AGENT_HOLD_BAZOOKA_R        ("ef62d355-c815-4816-2474-b1acc21094a6"); +LLUUID const ANIM_AGENT_HOLD_BOW_L            ("8b102617-bcba-037b-86c1-b76219f90c88"); +LLUUID const ANIM_AGENT_HOLD_HANDGUN_R        ("efdc1727-8b8a-c800-4077-975fc27ee2f2"); +LLUUID const ANIM_AGENT_HOLD_RIFLE_R          ("3d94bad0-c55b-7dcc-8763-033c59405d33"); +LLUUID const ANIM_AGENT_HOLD_THROW_R          ("7570c7b5-1f22-56dd-56ef-a9168241bbb6"); +LLUUID const ANIM_AGENT_HOVER                 ("4ae8016b-31b9-03bb-c401-b1ea941db41d"); +LLUUID const ANIM_AGENT_HOVER_DOWN            ("20f063ea-8306-2562-0b07-5c853b37b31e"); +LLUUID const ANIM_AGENT_HOVER_UP              ("62c5de58-cb33-5743-3d07-9e4cd4352864"); +LLUUID const ANIM_AGENT_IMPATIENT             ("5ea3991f-c293-392e-6860-91dfa01278a3"); +LLUUID const ANIM_AGENT_JUMP                  ("2305bd75-1ca9-b03b-1faa-b176b8a8c49e"); +LLUUID const ANIM_AGENT_JUMP_FOR_JOY          ("709ea28e-1573-c023-8bf8-520c8bc637fa"); +LLUUID const ANIM_AGENT_KISS_MY_BUTT          ("19999406-3a3a-d58c-a2ac-d72e555dcf51"); +LLUUID const ANIM_AGENT_LAND                  ("7a17b059-12b2-41b1-570a-186368b6aa6f"); +LLUUID const ANIM_AGENT_LAUGH_SHORT           ("ca5b3f14-3194-7a2b-c894-aa699b718d1f"); +LLUUID const ANIM_AGENT_MEDIUM_LAND           ("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"); +LLUUID const ANIM_AGENT_MOTORCYCLE_SIT        ("08464f78-3a8e-2944-cba5-0c94aff3af29"); +LLUUID const ANIM_AGENT_MUSCLE_BEACH          ("315c3a41-a5f3-0ba4-27da-f893f769e69b"); +LLUUID const ANIM_AGENT_NO                    ("5a977ed9-7f72-44e9-4c4c-6e913df8ae74"); +LLUUID const ANIM_AGENT_NO_UNHAPPY            ("d83fa0e5-97ed-7eb2-e798-7bd006215cb4"); +LLUUID const ANIM_AGENT_NYAH_NYAH             ("f061723d-0a18-754f-66ee-29a44795a32f"); +LLUUID const ANIM_AGENT_ONETWO_PUNCH          ("eefc79be-daae-a239-8c04-890f5d23654a"); +LLUUID const ANIM_AGENT_PEACE                 ("b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"); +LLUUID const ANIM_AGENT_POINT_ME              ("17c024cc-eef2-f6a0-3527-9869876d7752"); +LLUUID const ANIM_AGENT_POINT_YOU             ("ec952cca-61ef-aa3b-2789-4d1344f016de"); +LLUUID const ANIM_AGENT_PRE_JUMP              ("7a4e87fe-de39-6fcb-6223-024b00893244"); +LLUUID const ANIM_AGENT_PUNCH_LEFT            ("f3300ad9-3462-1d07-2044-0fef80062da0"); +LLUUID const ANIM_AGENT_PUNCH_RIGHT           ("c8e42d32-7310-6906-c903-cab5d4a34656"); +LLUUID const ANIM_AGENT_REPULSED              ("36f81a92-f076-5893-dc4b-7c3795e487cf"); +LLUUID const ANIM_AGENT_ROUNDHOUSE_KICK       ("49aea43b-5ac3-8a44-b595-96100af0beda"); +LLUUID const ANIM_AGENT_RPS_COUNTDOWN         ("35db4f7e-28c2-6679-cea9-3ee108f7fc7f"); +LLUUID const ANIM_AGENT_RPS_PAPER             ("0836b67f-7f7b-f37b-c00a-460dc1521f5a"); +LLUUID const ANIM_AGENT_RPS_ROCK              ("42dd95d5-0bc6-6392-f650-777304946c0f"); +LLUUID const ANIM_AGENT_RPS_SCISSORS          ("16803a9f-5140-e042-4d7b-d28ba247c325"); +LLUUID const ANIM_AGENT_RUN                   ("05ddbff8-aaa9-92a1-2b74-8fe77a29b445"); +LLUUID const ANIM_AGENT_RUN_NEW               ("1ab1b236-cd08-21e6-0cbc-0d923fc6eca2"); +LLUUID const ANIM_AGENT_SAD                   ("0eb702e2-cc5a-9a88-56a5-661a55c0676a"); +LLUUID const ANIM_AGENT_SALUTE                ("cd7668a6-7011-d7e2-ead8-fc69eff1a104"); +LLUUID const ANIM_AGENT_SHOOT_BOW_L           ("e04d450d-fdb5-0432-fd68-818aaf5935f8"); +LLUUID const ANIM_AGENT_SHOUT                 ("6bd01860-4ebd-127a-bb3d-d1427e8e0c42"); +LLUUID const ANIM_AGENT_SHRUG                 ("70ea714f-3a97-d742-1b01-590a8fcd1db5"); +LLUUID const ANIM_AGENT_SIT                   ("1a5fe8ac-a804-8a5d-7cbd-56bd83184568"); +LLUUID const ANIM_AGENT_SIT_FEMALE            ("b1709c8d-ecd3-54a1-4f28-d55ac0840782"); +LLUUID const ANIM_AGENT_SIT_GENERIC           ("245f3c54-f1c0-bf2e-811f-46d8eeb386e7"); +LLUUID const ANIM_AGENT_SIT_GROUND            ("1c7600d6-661f-b87b-efe2-d7421eb93c86"); +LLUUID const ANIM_AGENT_SIT_GROUND_CONSTRAINED("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"); +LLUUID const ANIM_AGENT_SIT_TO_STAND          ("a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"); +LLUUID const ANIM_AGENT_SLEEP                 ("f2bed5f9-9d44-39af-b0cd-257b2a17fe40"); +LLUUID const ANIM_AGENT_SMOKE_IDLE            ("d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"); +LLUUID const ANIM_AGENT_SMOKE_INHALE          ("6802d553-49da-0778-9f85-1599a2266526"); +LLUUID const ANIM_AGENT_SMOKE_THROW_DOWN      ("0a9fb970-8b44-9114-d3a9-bf69cfe804d6"); +LLUUID const ANIM_AGENT_SNAPSHOT              ("eae8905b-271a-99e2-4c0e-31106afd100c"); +LLUUID const ANIM_AGENT_STAND                 ("2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"); +LLUUID const ANIM_AGENT_STANDUP               ("3da1d753-028a-5446-24f3-9c9b856d9422"); +LLUUID const ANIM_AGENT_STAND_1               ("15468e00-3400-bb66-cecc-646d7c14458e"); +LLUUID const ANIM_AGENT_STAND_2               ("370f3a20-6ca6-9971-848c-9a01bc42ae3c"); +LLUUID const ANIM_AGENT_STAND_3               ("42b46214-4b44-79ae-deb8-0df61424ff4b"); +LLUUID const ANIM_AGENT_STAND_4               ("f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"); +LLUUID const ANIM_AGENT_STRETCH               ("80700431-74ec-a008-14f8-77575e73693f"); +LLUUID const ANIM_AGENT_STRIDE                ("1cb562b0-ba21-2202-efb3-30f82cdf9595"); +LLUUID const ANIM_AGENT_SURF                  ("41426836-7437-7e89-025d-0aa4d10f1d69"); +LLUUID const ANIM_AGENT_SURPRISE              ("313b9881-4302-73c0-c7d0-0e7a36b6c224"); +LLUUID const ANIM_AGENT_SWORD_STRIKE          ("85428680-6bf9-3e64-b489-6f81087c24bd"); +LLUUID const ANIM_AGENT_TALK                  ("5c682a95-6da4-a463-0bf6-0f5b7be129d1"); +LLUUID const ANIM_AGENT_TANTRUM               ("11000694-3f41-adc2-606b-eee1d66f3724"); +LLUUID const ANIM_AGENT_THROW_R               ("aa134404-7dac-7aca-2cba-435f9db875ca"); +LLUUID const ANIM_AGENT_TRYON_SHIRT           ("83ff59fe-2346-f236-9009-4e3608af64c1"); +LLUUID const ANIM_AGENT_TURNLEFT              ("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"); +LLUUID const ANIM_AGENT_TURNRIGHT             ("2d6daa51-3192-6794-8e2e-a15f8338ec30"); +LLUUID const ANIM_AGENT_TYPE                  ("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"); +LLUUID const ANIM_AGENT_WALK                  ("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"); +LLUUID const ANIM_AGENT_WALK_NEW              ("33339176-7ddc-9397-94a4-bf3403cbc8f5"); +LLUUID const ANIM_AGENT_WHISPER               ("7693f268-06c7-ea71-fa21-2b30d6533f8f"); +LLUUID const ANIM_AGENT_WHISTLE               ("b1ed7982-c68e-a982-7561-52a88a5298c0"); +LLUUID const ANIM_AGENT_WINK                  ("869ecdad-a44b-671e-3266-56aef2e3ac2e"); +LLUUID const ANIM_AGENT_WINK_HOLLYWOOD        ("c0c4030f-c02b-49de-24ba-2331f43fe41c"); +LLUUID const ANIM_AGENT_WORRY                 ("9f496bd2-589a-709f-16cc-69bf7df1d36c"); +LLUUID const ANIM_AGENT_YES                   ("15dd911d-be82-2856-26db-27659b142875"); +LLUUID const ANIM_AGENT_YES_HAPPY             ("b8c8b2a3-9008-1771-3bfc-90924955ab2d"); +LLUUID const ANIM_AGENT_YOGA_FLOAT            ("42ecd00b-9947-a97c-400a-bbc9174c7aeb");  LLUUID AGENT_WALK_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_CROUCHWALK, ANIM_AGENT_TURNLEFT, ANIM_AGENT_TURNRIGHT};  S32 NUM_AGENT_WALK_ANIMS = LL_ARRAY_SIZE(AGENT_WALK_ANIMS); diff --git a/indra/llcommon/llavatarconstants.h b/indra/llcommon/llavatarconstants.h index 596b0643ef..f47f447b45 100644 --- a/indra/llcommon/llavatarconstants.h +++ b/indra/llcommon/llavatarconstants.h @@ -46,10 +46,10 @@ const U32 AVATAR_TRANSACTED				= 0x1 << 3;	// whether avatar has actively used p  const U32 AVATAR_ONLINE					= 0x1 << 4; // the online status of this avatar, if known.  const U32 AVATAR_AGEVERIFIED			= 0x1 << 5;	// whether avatar has been age-verified -static const std::string VISIBILITY_DEFAULT("default"); -static const std::string VISIBILITY_HIDDEN("hidden"); -static const std::string VISIBILITY_VISIBLE("visible"); -static const std::string VISIBILITY_INVISIBLE("invisible"); +char const* const VISIBILITY_DEFAULT = "default"; +char const* const VISIBILITY_HIDDEN = "hidden"; +char const* const VISIBILITY_VISIBLE = "visible"; +char const* const VISIBILITY_INVISIBLE = "invisible";  #endif diff --git a/indra/llcommon/lllslconstants.h b/indra/llcommon/lllslconstants.h index 539c807020..9f32598e61 100644 --- a/indra/llcommon/lllslconstants.h +++ b/indra/llcommon/lllslconstants.h @@ -181,7 +181,7 @@ const S32 OBJECT_GROUP = 7;  const S32 OBJECT_CREATOR = 8;  // llTextBox() magic token string - yes this is a hack.  sue me. -const std::string TEXTBOX_MAGIC_TOKEN = "!!llTextBox!!"; +char const* const TEXTBOX_MAGIC_TOKEN = "!!llTextBox!!";  // changed() event flags  const U32	CHANGED_NONE = 0x0; diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index a502d1a7eb..51fcd5b717 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -26,6 +26,12 @@  #include "linden_common.h" +#include "llmemory.h" + +#if MEM_TRACK_MEM +#include "llthread.h" +#endif +  #if defined(LL_WINDOWS)  # include <windows.h>  # include <psapi.h> @@ -37,8 +43,6 @@  # include <unistd.h>  #endif -#include "llmemory.h" -  //----------------------------------------------------------------------------  //static @@ -105,6 +109,20 @@ U64 LLMemory::getCurrentRSS()  	return counters.WorkingSetSize;  } +//static  +U32 LLMemory::getWorkingSetSize() +{ +    PROCESS_MEMORY_COUNTERS pmc ; +	U32 ret = 0 ; + +    if (GetProcessMemoryInfo( GetCurrentProcess(), &pmc, sizeof(pmc)) ) +	{ +		ret = pmc.WorkingSetSize ; +	} + +	return ret ; +} +  #elif defined(LL_DARWIN)  /*  @@ -151,6 +169,11 @@ U64 LLMemory::getCurrentRSS()  	return residentSize;  } +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #elif defined(LL_LINUX)  U64 LLMemory::getCurrentRSS() @@ -185,6 +208,11 @@ bail:  	return rss;  } +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #elif LL_SOLARIS  #include <sys/types.h>  #include <sys/stat.h> @@ -213,6 +241,12 @@ U64 LLMemory::getCurrentRSS()  	return((U64)proc_psinfo.pr_rssize * 1024);  } + +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #else  U64 LLMemory::getCurrentRSS() @@ -220,4 +254,144 @@ U64 LLMemory::getCurrentRSS()  	return 0;  } +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #endif + +//-------------------------------------------------------------------------------------------------- +#if MEM_TRACK_MEM +#include "llframetimer.h" + +//static  +LLMemTracker* LLMemTracker::sInstance = NULL ; + +LLMemTracker::LLMemTracker() +{ +	mLastAllocatedMem = LLMemory::getWorkingSetSize() ; +	mCapacity = 128 ;	 +	mCurIndex = 0 ; +	mCounter = 0 ; +	mDrawnIndex = 0 ; +	mPaused = FALSE ; + +	mMutexp = new LLMutex(NULL) ; +	mStringBuffer = new char*[128] ; +	mStringBuffer[0] = new char[mCapacity * 128] ; +	for(S32 i = 1 ; i < mCapacity ; i++) +	{ +		mStringBuffer[i] = mStringBuffer[i-1] + 128 ; +	} +} + +LLMemTracker::~LLMemTracker() +{ +	delete[] mStringBuffer[0] ; +	delete[] mStringBuffer; +	delete mMutexp ; +} + +//static  +LLMemTracker* LLMemTracker::getInstance() +{ +	if(!sInstance) +	{ +		sInstance = new LLMemTracker() ; +	} +	return sInstance ; +} + +//static  +void LLMemTracker::release()  +{ +	if(sInstance) +	{ +		delete sInstance ; +		sInstance = NULL ; +	} +} + +//static +void LLMemTracker::track(const char* function, const int line) +{ +	static const S32 MIN_ALLOCATION = 0 ; //1KB + +	if(mPaused) +	{ +		return ; +	} + +	U32 allocated_mem = LLMemory::getWorkingSetSize() ; + +	LLMutexLock lock(mMutexp) ; + +	S32 delta_mem = allocated_mem - mLastAllocatedMem ; +	mLastAllocatedMem = allocated_mem ; + +	if(delta_mem <= 0) +	{ +		return ; //occupied memory does not grow +	} + +	if(delta_mem < MIN_ALLOCATION) +	{ +		return ; +	} +		 +	char* buffer = mStringBuffer[mCurIndex++] ; +	F32 time = (F32)LLFrameTimer::getElapsedSeconds() ; +	S32 hours = (S32)(time / (60*60)); +	S32 mins = (S32)((time - hours*(60*60)) / 60); +	S32 secs = (S32)((time - hours*(60*60) - mins*60)); +	strcpy(buffer, function) ; +	sprintf(buffer + strlen(function), " line: %d DeltaMem: %d (bytes) Time: %d:%02d:%02d", line, delta_mem, hours,mins,secs) ; + +	if(mCounter < mCapacity) +	{ +		mCounter++ ; +	} +	if(mCurIndex >= mCapacity) +	{ +		mCurIndex = 0 ;		 +	} +} + + +//static  +void LLMemTracker::preDraw(BOOL pause)  +{ +	mMutexp->lock() ; + +	mPaused = pause ; +	mDrawnIndex = mCurIndex - 1; +	mNumOfDrawn = 0 ; +} +	 +//static  +void LLMemTracker::postDraw()  +{ +	mMutexp->unlock() ; +} + +//static  +const char* LLMemTracker::getNextLine()  +{ +	if(mNumOfDrawn >= mCounter) +	{ +		return NULL ; +	} +	mNumOfDrawn++; + +	if(mDrawnIndex < 0) +	{ +		mDrawnIndex = mCapacity - 1 ; +	} + +	return mStringBuffer[mDrawnIndex--] ; +} + +#endif //MEM_TRACK_MEM +//-------------------------------------------------------------------------------------------------- + diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 9bf4248bb7..11406f59b0 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -26,7 +26,7 @@  #ifndef LLMEMORY_H  #define LLMEMORY_H - +#include "llmemtype.h"  extern S32 gTotalDAlloc;  extern S32 gTotalDAUse; @@ -44,10 +44,55 @@ public:  	// Return the resident set size of the current process, in bytes.  	// Return value is zero if not known.  	static U64 getCurrentRSS(); +	static U32 getWorkingSetSize();  private:  	static char* reserveMem;  }; +//---------------------------------------------------------------------------- +#if MEM_TRACK_MEM +class LLMutex ; +class LL_COMMON_API LLMemTracker +{ +private: +	LLMemTracker() ; +	~LLMemTracker() ; + +public: +	static void release() ; +	static LLMemTracker* getInstance() ; + +	void track(const char* function, const int line) ; +	void preDraw(BOOL pause) ; +	void postDraw() ; +	const char* getNextLine() ; + +private: +	static LLMemTracker* sInstance ; +	 +	char**     mStringBuffer ; +	S32        mCapacity ; +	U32        mLastAllocatedMem ; +	S32        mCurIndex ; +	S32        mCounter; +	S32        mDrawnIndex; +	S32        mNumOfDrawn; +	BOOL       mPaused; +	LLMutex*   mMutexp ; +}; + +#define MEM_TRACK_RELEASE LLMemTracker::release() ; +#define MEM_TRACK         LLMemTracker::getInstance()->track(__FUNCTION__, __LINE__) ; + +#else // MEM_TRACK_MEM + +#define MEM_TRACK_RELEASE +#define MEM_TRACK + +#endif // MEM_TRACK_MEM + +//---------------------------------------------------------------------------- +  // LLRefCount moved to llrefcount.h  // LLPointer moved to llpointer.h diff --git a/indra/llcommon/llmemtype.cpp b/indra/llcommon/llmemtype.cpp index fe83f87d4b..6290a7158f 100644 --- a/indra/llcommon/llmemtype.cpp +++ b/indra/llcommon/llmemtype.cpp @@ -229,3 +229,4 @@ char const * LLMemType::getNameFromID(S32 id)  	return DeclareMemType::mNameList[id];  } +//-------------------------------------------------------------------------------------------------- diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h index 925010ac96..1372f48dcf 100644 --- a/indra/llcommon/llmetricperformancetester.h +++ b/indra/llcommon/llmetricperformancetester.h @@ -27,7 +27,7 @@  #ifndef LL_METRICPERFORMANCETESTER_H   #define LL_METRICPERFORMANCETESTER_H  -const std::string DEFAULT_METRIC_NAME("metric"); +char const* const DEFAULT_METRIC_NAME = "metric";  /**   * @class LLMetricPerformanceTesterBasic diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 7d5afe92dc..7703132d90 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,7 +28,7 @@  #define LL_LLVERSIONVIEWER_H  const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 6; +const S32 LL_VERSION_MINOR = 7;  const S32 LL_VERSION_PATCH = 0;  const S32 LL_VERSION_BUILD = 0; diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index b46a99e030..39211bf7fa 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -274,11 +274,11 @@ LLImageRaw::LLImageRaw(U8 *data, U16 width, U16 height, S8 components)  	++sRawImageCount;  } -LLImageRaw::LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only) -	: LLImageBase() -{ -	createFromFile(filename, j2c_lowest_mip_only); -} +//LLImageRaw::LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only) +//	: LLImageBase() +//{ +//	createFromFile(filename, j2c_lowest_mip_only); +//}  LLImageRaw::~LLImageRaw()  { @@ -1178,7 +1178,7 @@ file_extensions[] =  	{ "png", IMG_CODEC_PNG }  };  #define NUM_FILE_EXTENSIONS LL_ARRAY_SIZE(file_extensions) - +#if 0  static std::string find_file(std::string &name, S8 *codec)  {  	std::string tname; @@ -1196,7 +1196,7 @@ static std::string find_file(std::string &name, S8 *codec)  	}  	return std::string("");  } - +#endif  EImageCodec LLImageBase::getCodecFromExtension(const std::string& exten)  {  	for (int i=0; i<(int)(NUM_FILE_EXTENSIONS); i++) @@ -1206,7 +1206,7 @@ EImageCodec LLImageBase::getCodecFromExtension(const std::string& exten)  	}  	return IMG_CODEC_INVALID;  } - +#if 0  bool LLImageRaw::createFromFile(const std::string &filename, bool j2c_lowest_mip_only)  {  	std::string name = filename; @@ -1313,7 +1313,7 @@ bool LLImageRaw::createFromFile(const std::string &filename, bool j2c_lowest_mip  	return true;  } - +#endif  //---------------------------------------------------------------------------  // LLImageFormatted  //--------------------------------------------------------------------------- diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index bca7e915fa..825b9aab1a 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -164,7 +164,7 @@ public:  	LLImageRaw(U16 width, U16 height, S8 components);  	LLImageRaw(U8 *data, U16 width, U16 height, S8 components);  	// Construct using createFromFile (used by tools) -	LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only = false); +	//LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only = false);  	/*virtual*/ void deleteData();  	/*virtual*/ U8* allocateData(S32 size = -1); @@ -226,7 +226,7 @@ public:  protected:  	// Create an image from a local file (generally used in tools) -	bool createFromFile(const std::string& filename, bool j2c_lowest_mip_only = false); +	//bool createFromFile(const std::string& filename, bool j2c_lowest_mip_only = false);  	void copyLineScaled( U8* in, U8* out, S32 in_pixel_len, S32 out_pixel_len, S32 in_pixel_step, S32 out_pixel_step );  	void compositeRowScaled4onto3( U8* in, U8* out, S32 in_pixel_len, S32 out_pixel_len ); diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index d1c74b6fa1..28dc3bd313 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -38,6 +38,12 @@ LLImageDecodeThread::LLImageDecodeThread(bool threaded)  	mCreationMutex = new LLMutex(getAPRPool());  } +//virtual  +LLImageDecodeThread::~LLImageDecodeThread() +{ +	delete mCreationMutex ; +} +  // MAIN THREAD  // virtual  S32 LLImageDecodeThread::update(U32 max_time_ms) diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h index c3c92ec832..c684222fa5 100644 --- a/indra/llimage/llimageworker.h +++ b/indra/llimage/llimageworker.h @@ -73,6 +73,8 @@ public:  public:  	LLImageDecodeThread(bool threaded = true); +	virtual ~LLImageDecodeThread(); +  	handle_t decodeImage(LLImageFormatted* image,  						 U32 priority, S32 discard, BOOL needs_aux,  						 Responder* responder); diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index bad4d00fd6..687c1a7d45 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -703,6 +703,7 @@ void LLCamera::calculateFrustumPlanes(F32 left, F32 right, F32 top, F32 bottom)  	mLocalPlanes[PLANE_BOTTOM].setVec( a, c, b);   	//calculate center and radius squared of frustum in world absolute coordinates +	static LLVector3 const X_AXIS(1.f, 0.f, 0.f);  	mFrustCenter = X_AXIS*mFarPlane*0.5f;  	mFrustCenter = transformToAbsolute(mFrustCenter);  	mFrustRadiusSquared = mFarPlane*0.5f; diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index 922d6f9fac..531144db39 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -50,15 +50,6 @@ const F32 MIN_FAR_PLANE 	= 0.2f;  static const F32 MIN_FIELD_OF_VIEW = 5.0f * DEG_TO_RAD;  static const F32 MAX_FIELD_OF_VIEW = 175.f * DEG_TO_RAD; -static const LLVector3 X_AXIS(1.f,0.f,0.f); -static const LLVector3 Y_AXIS(0.f,1.f,0.f); -static const LLVector3 Z_AXIS(0.f,0.f,1.f); - -static const LLVector3 NEG_X_AXIS(-1.f,0.f,0.f); -static const LLVector3 NEG_Y_AXIS(0.f,-1.f,0.f); -static const LLVector3 NEG_Z_AXIS(0.f,0.f,-1.f); - -  // An LLCamera is an LLCoorFrame with a view frustum.  // This means that it has several methods for moving it around   // that are inherited from the LLCoordFrame() class : diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 14e1ca8d43..71b92962fb 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -4406,19 +4406,54 @@ std::ostream& operator<<(std::ostream &s, const LLVolume *volumep)  BOOL LLVolumeFace::create(LLVolume* volume, BOOL partial_build)  { +	BOOL ret = FALSE ;  	if (mTypeMask & CAP_MASK)  	{ -		return createCap(volume, partial_build); +		ret = createCap(volume, partial_build);  	}  	else if ((mTypeMask & END_MASK) || (mTypeMask & SIDE_MASK))  	{ -		return createSide(volume, partial_build); +		ret = createSide(volume, partial_build);  	}  	else  	{  		llerrs << "Unknown/uninitialized face type!" << llendl; -		return FALSE;  	} + +	//update the range of the texture coordinates +	if(ret) +	{ +		mTexCoordExtents[0].setVec(1.f, 1.f) ; +		mTexCoordExtents[1].setVec(0.f, 0.f) ; + +		U32 end = mVertices.size() ; +		for(U32 i = 0 ; i < end ; i++) +		{ +			if(mTexCoordExtents[0].mV[0] > mVertices[i].mTexCoord.mV[0]) +			{ +				mTexCoordExtents[0].mV[0] = mVertices[i].mTexCoord.mV[0] ; +			} +			if(mTexCoordExtents[1].mV[0] < mVertices[i].mTexCoord.mV[0]) +			{ +				mTexCoordExtents[1].mV[0] = mVertices[i].mTexCoord.mV[0] ; +			} + +			if(mTexCoordExtents[0].mV[1] > mVertices[i].mTexCoord.mV[1]) +			{ +				mTexCoordExtents[0].mV[1] = mVertices[i].mTexCoord.mV[1] ; +			} +			if(mTexCoordExtents[1].mV[1] < mVertices[i].mTexCoord.mV[1]) +			{ +				mTexCoordExtents[1].mV[1] = mVertices[i].mTexCoord.mV[1] ; +			}			 +		} +		mTexCoordExtents[0].mV[0] = llmax(0.f, mTexCoordExtents[0].mV[0]) ; +		mTexCoordExtents[0].mV[1] = llmax(0.f, mTexCoordExtents[0].mV[1]) ; +		mTexCoordExtents[1].mV[0] = llmin(1.f, mTexCoordExtents[1].mV[0]) ; +		mTexCoordExtents[1].mV[1] = llmin(1.f, mTexCoordExtents[1].mV[1]) ; +	} + +	return ret ;  }  void	LerpPlanarVertex(LLVolumeFace::VertexData& v0, diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index d48a79ee46..28b9895ff3 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -831,6 +831,7 @@ public:  	S32 mNumT;  	LLVector3 mExtents[2]; //minimum and maximum point of face +	LLVector2 mTexCoordExtents[2]; //minimum and maximum of texture coordinates of the face.  	std::vector<VertexData> mVertices;  	std::vector<U16>	mIndices; diff --git a/indra/llmath/tests/m3math_test.cpp b/indra/llmath/tests/m3math_test.cpp index 622ee28288..479a00b99f 100644 --- a/indra/llmath/tests/m3math_test.cpp +++ b/indra/llmath/tests/m3math_test.cpp @@ -36,11 +36,11 @@  #include "../v3dmath.h"  #include "../test/lltut.h" -
 -#if LL_WINDOWS
 -// disable unreachable code warnings caused by usage of skip.
 -#pragma warning(disable: 4702)
 -#endif
 + +#if LL_WINDOWS +// disable unreachable code warnings caused by usage of skip. +#pragma warning(disable: 4702) +#endif  namespace tut  { diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index 7eb198bb34..580ee7f8b4 100644 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   test_llsdmessage_peer.py  @author Nat Goodspeed diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py index 4d58ef7130..b70ce91ee7 100644 --- a/indra/llmessage/tests/testrunner.py +++ b/indra/llmessage/tests/testrunner.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   testrunner.py  @author Nat Goodspeed diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 595c470a19..26a20cede8 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -64,9 +64,10 @@ LLPluginClassMedia::~LLPluginClassMedia()  	reset();  } -bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug) +bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_dir, const std::string &plugin_filename, bool debug)  {	  	LL_DEBUGS("Plugin") << "launcher: " << launcher_filename << LL_ENDL; +	LL_DEBUGS("Plugin") << "dir: " << plugin_dir << LL_ENDL;  	LL_DEBUGS("Plugin") << "plugin: " << plugin_filename << LL_ENDL;  	mPlugin = new LLPluginProcessParent(this); @@ -77,7 +78,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s  	message.setValue("target", mTarget);  	sendMessage(message); -	mPlugin->init(launcher_filename, plugin_filename, debug); +	mPlugin->init(launcher_filename, plugin_dir, plugin_filename, debug);  	return true;  } diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index c826e13c40..618e928a08 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -45,6 +45,7 @@ public:  	// local initialization, called by the media manager when creating a source  	virtual bool init(const std::string &launcher_filename,  +					  const std::string &plugin_dir,   					  const std::string &plugin_filename,   					  bool debug); diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp index c326961db4..7cde82a20e 100644 --- a/indra/llplugin/llplugininstance.cpp +++ b/indra/llplugin/llplugininstance.cpp @@ -32,6 +32,10 @@  #include "llapr.h" +#if LL_WINDOWS +#include "direct.h"	// needed for _chdir() +#endif +  /** Virtual destructor. */  LLPluginInstanceMessageListener::~LLPluginInstanceMessageListener()  { @@ -73,10 +77,24 @@ LLPluginInstance::~LLPluginInstance()   * @param[in] plugin_file Name of plugin dll/dylib/so. TODO:DOC is this correct? see .h   * @return 0 if successful, APR error code or error code from the plugin's init function on failure.   */ -int LLPluginInstance::load(std::string &plugin_file) +int LLPluginInstance::load(const std::string& plugin_dir, std::string &plugin_file)  {  	pluginInitFunction init_function = NULL; +	if ( plugin_dir.length() ) +	{ +#if LL_WINDOWS +		// VWR-21275: +		// *SOME* Windows systems fail to load the Qt plugins if the current working +		// directory is not the same as the directory with the Qt DLLs in. +		// This should not cause any run time issues since we are changing the cwd for the +		// plugin shell process and not the viewer. +		// Changing back to the previous directory is not necessary since the plugin shell +		// quits once the plugin exits. +		_chdir( plugin_dir.c_str() );	 +#endif +	}; +  	int result = apr_dso_load(&mDSOHandle,  					  plugin_file.c_str(),  					  gAPRPoolp); diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h index 50531ca77f..e6926c3e37 100644 --- a/indra/llplugin/llplugininstance.h +++ b/indra/llplugin/llplugininstance.h @@ -56,7 +56,7 @@ public:  	// Load a plugin dll/dylib/so  	// Returns 0 if successful, APR error code or error code returned from the plugin's init function on failure. -	int load(std::string &plugin_file); +	int load(const std::string& plugin_dir, std::string &plugin_file);  	// Sends a message to the plugin.  	void sendMessage(const std::string &message); diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index 45a86476ac..0beb46d0e5 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -139,7 +139,7 @@ void LLPluginProcessChild::idle(void)  				if(!mPluginFile.empty())  				{  					mInstance = new LLPluginInstance(this); -					if(mInstance->load(mPluginFile) == 0) +					if(mInstance->load(mPluginDir, mPluginFile) == 0)  					{  						mHeartbeat.start();  						mHeartbeat.setTimerExpirySec(HEARTBEAT_SECONDS); @@ -348,6 +348,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)  			if(message_name == "load_plugin")  			{  				mPluginFile = parsed.getValue("file"); +				mPluginDir = parsed.getValue("dir");  			}  			else if(message_name == "shm_add")  			{ diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 22ff403ad6..a9d6794e40 100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h @@ -92,6 +92,7 @@ private:  	LLSocket::ptr_t mSocket;  	std::string mPluginFile; +	std::string mPluginDir;  	LLPluginInstance *mInstance; diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index c002de0462..db4b8b1316 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -157,10 +157,11 @@ void LLPluginProcessParent::errorState(void)  		setState(STATE_ERROR);  } -void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug) +void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_dir, const std::string &plugin_filename, bool debug)  {	  	mProcess.setExecutable(launcher_filename);  	mPluginFile = plugin_filename; +	mPluginDir = plugin_dir;  	mCPUUsage = 0.0f;  	mDebug = debug;	  	setState(STATE_INITIALIZED); @@ -445,6 +446,7 @@ void LLPluginProcessParent::idle(void)  				{  					LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "load_plugin");  					message.setValue("file", mPluginFile); +					message.setValue("dir", mPluginDir);  					sendMessage(message);  				} diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 32394809ef..c66723f175 100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h @@ -57,6 +57,7 @@ public:  	~LLPluginProcessParent();  	void init(const std::string &launcher_filename,  +			  const std::string &plugin_dir,  			  const std::string &plugin_filename,   			  bool debug); @@ -151,6 +152,7 @@ private:  	LLProcessLauncher mProcess;  	std::string mPluginFile; +	std::string mPluginDir;  	LLPluginProcessParentOwner *mOwner; diff --git a/indra/llprimitive/lltextureentry.cpp b/indra/llprimitive/lltextureentry.cpp index 3c1d031ff5..861bde5c89 100644 --- a/indra/llprimitive/lltextureentry.cpp +++ b/indra/llprimitive/lltextureentry.cpp @@ -403,7 +403,7 @@ S32 LLTextureEntry::setOffsetT(F32 t)  S32 LLTextureEntry::setRotation(F32 theta)  { -	if (mRotation != theta) +	if (mRotation != theta && llfinite(theta))  	{  		mRotation = theta;  		return TEM_CHANGE_TEXTURE; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 65940cb067..e8e98211f1 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1063,16 +1063,6 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_  {  	if (gGL.getTexUnit(0)->bind(this, false, true))  	{ -		if(gGLManager.mDebugGPU) -		{ -			llinfos << "Calling glCopyTexSubImage2D(...)" << llendl ; -			checkTexSize(true) ; -			llcallstacks << fb_x << " : " << fb_y << " : " << x_pos << " : " << y_pos << " : " << width << " : " << height << -				" : " << (S32)mComponents << llcallstacksendl ; - -			log_glerror() ; -		} -  		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, fb_x, fb_y, x_pos, y_pos, width, height);  		mGLTextureCreated = true;  		stop_glerror(); diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 64556bcb4c..cb898e385f 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -101,10 +101,18 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)  		{  			if (0 != LLFile::remove(fullpath))  			{ +				retry_count++;  				result = errno;  				llwarns << "Problem removing " << fullpath << " - errorcode: "  						<< result << " attempt " << retry_count << llendl; -				ms_sleep(1000); + +				if(retry_count >= 5) +				{ +					llwarns << "Failed to remove " << fullpath << llendl ; +					return count ; +				} + +				ms_sleep(100);  			}  			else  			{ @@ -113,8 +121,7 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)  					llwarns << "Successfully removed " << fullpath << llendl;  				}  				break; -			} -			retry_count++; +			}			  		}  		count++;  	} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 85238cacdd..6630d8f400 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -697,28 +697,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>BrowserUseDefaultCAFile</key> -    <map> -      <key>Comment</key> -      <string>Tell the built-in web browser to use the CA.pem file shipped with the client.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map> -    <key>BrowserCAFilePath</key> -    <map> -      <key>Comment</key> -      <string>Tell the built-in web browser the path to an alternative CA.pem file (only used if BrowserUseDefaultCAFile is false).</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>String</string> -      <key>Value</key> -      <string></string> -    </map>        <key>BlockAvatarAppearanceMessages</key>          <map>          <key>Comment</key> @@ -1179,7 +1157,7 @@        <key>Type</key>        <string>U32</string>        <key>Value</key> -      <integer>20000</integer> +      <integer>128</integer>      </map>      <key>CacheSize</key>      <map> @@ -1852,6 +1830,17 @@        <key>Value</key>        <integer>0</integer>      </map> +   <key>DebugShowMemory</key> +    <map> +      <key>Comment</key> +      <string>Show Total Allocated Memory</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>DebugShowRenderInfo</key>      <map>        <key>Comment</key> @@ -1874,10 +1863,21 @@      <key>Value</key>      <integer>0</integer>    </map> +  <key>DebugShowTextureInfo</key> +    <map> +      <key>Comment</key> +      <string>Show inertested texture info</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>    <key>DebugShowTime</key>      <map>        <key>Comment</key> -      <string>Show depth buffer contents</string> +      <string>Show time info</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py index 4fd04d780e..5ebec1563e 100644 --- a/indra/newview/generate_breakpad_symbols.py +++ b/indra/newview/generate_breakpad_symbols.py @@ -1,29 +1,31 @@  #!/usr/bin/env python -# @file generate_breakpad_symbols.py -# @author Brad Kittenbrink <brad@lindenlab.com> -# @brief Simple tool for generating google_breakpad symbol information -#        for the crash reporter. -# -# $LicenseInfo:firstyear=2010&license=viewerlgpl$ -# Second Life Viewer Source Code -# Copyright (C) 2010, Linden Research, Inc. -#  -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; -# version 2.1 of the License only. -#  -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -# Lesser General Public License for more details. -#  -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -#  -# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -# $/LicenseInfo$ +"""\ +@file generate_breakpad_symbols.py +@author Brad Kittenbrink <brad@lindenlab.com> +@brief Simple tool for generating google_breakpad symbol information +       for the crash reporter. + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import collections diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 6a9dfaf21b..a23f809b71 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1296,7 +1296,7 @@ bool LLAppViewer::mainLoop()  				resumeMainloopTimeout();  				pingMainloopTimeout("Main:End"); -			}			 +			}	  		}  		catch(std::bad_alloc)  		{			 @@ -1779,6 +1779,8 @@ bool LLAppViewer::cleanup()  	ll_close_fail_log(); +	MEM_TRACK_RELEASE +      llinfos << "Goodbye!" << llendflush;  	// return 0; @@ -2471,16 +2473,24 @@ namespace {  		if(data["required"].asBoolean())  		{ -			apply_callback = &apply_update_ok_callback;  			if(LLStartUp::getStartupState() <= STATE_LOGIN_WAIT)  			{  				// The user never saw the progress bar. +				apply_callback = &apply_update_ok_callback;  				notification_name = "RequiredUpdateDownloadedVerboseDialog";  			} -			else +			else if(LLStartUp::getStartupState() < STATE_WORLD_INIT)  			{ +				// The user is logging in but blocked. +				apply_callback = &apply_update_ok_callback;  				notification_name = "RequiredUpdateDownloadedDialog";  			} +			else +			{ +				// The user is already logged in; treat like an optional update. +				apply_callback = &apply_update_callback; +				notification_name = "DownloadBackgroundTip"; +			}  		}  		else  		{ diff --git a/indra/newview/llcapabilityprovider.h b/indra/newview/llcapabilityprovider.h index a6e743f625..9d91245597 100644 --- a/indra/newview/llcapabilityprovider.h +++ b/indra/newview/llcapabilityprovider.h @@ -46,7 +46,7 @@ public:      /**       * Get host to which to send that capability request.       */ -    virtual LLHost getHost() const = 0; +    virtual const LLHost& getHost() const = 0;      /**       * Describe this LLCapabilityProvider for logging etc.       */ diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index c98bcbda45..5ff22f89ab 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -899,31 +899,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  				}  			} -			LLTextEditor* text_editor = notify_box->getChild<LLTextEditor>("text_editor_box", TRUE); -			S32 text_heigth = 0; -			if(text_editor != NULL) -			{ -				text_heigth = text_editor->getTextBoundingRect().getHeight(); -			} -  			//Prepare the rect for the view  			LLRect target_rect = mEditor->getDocumentView()->getRect();  			// squeeze down the widget by subtracting padding off left and right  			target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();  			target_rect.mRight -= mRightWidgetPad; -			notify_box->reshape(target_rect.getWidth(), -					notify_box->getRect().getHeight()); +			notify_box->reshape(target_rect.getWidth(),	notify_box->getRect().getHeight());  			notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom); -			if (text_editor != NULL) -			{ -				S32 text_heigth_delta = -						text_editor->getTextBoundingRect().getHeight() -								- text_heigth; -				notify_box->reshape(target_rect.getWidth(), -								notify_box->getRect().getHeight() + text_heigth_delta); -			} -  			LLInlineViewSegment::Params params;  			params.view = notify_box;  			params.left_pad = mLeftWidgetPad; diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index 6f02192d0a..d77ebc5367 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -185,6 +185,10 @@ BOOL LLColorSwatchCtrl::handleMouseUp(S32 x, S32 y, MASK mask)  			llassert(getEnabled());  			llassert(getVisible()); +			// Focus the widget now in order to return the focus +			// after the color picker is closed. +			setFocus(TRUE); +  			showPicker(FALSE);  		}  	} diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index a3d2941114..f781d5f3ff 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -177,10 +177,6 @@ void LLViewerDynamicTexture::postRender(BOOL success)  				generateGLTexture() ;  			} -			if(gGLManager.mDebugGPU) -			{ -				LLGLState::dumpStates() ; -			}  			success = mGLTexturep->setSubImageFromFrameBuffer(0, 0, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight);  		}  	} @@ -220,12 +216,6 @@ BOOL LLViewerDynamicTexture::updateAllInstances()  			LLViewerDynamicTexture *dynamicTexture = *iter;  			if (dynamicTexture->needsRender())  			{				 -				if(gGLManager.mDebugGPU) -				{				 -					llinfos << "class type: " << (S32)dynamicTexture->getType() << llendl; -					LLGLState::dumpStates() ; -				} -  				glClear(GL_DEPTH_BUFFER_BIT);  				gDepthDirty = TRUE; diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 2471da9da5..fe201a6773 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1155,7 +1155,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  		if (rebuild_tcoord)  		{  			LLVector2 tc = vf.mVertices[i].mTexCoord; -		 +		     			if (texgen != LLTextureEntry::TEX_GEN_DEFAULT)  			{  				LLVector3 vec = vf.mVertices[i].mPosition;  @@ -1331,7 +1331,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  		mTexExtents[0].setVec(0,0);  		mTexExtents[1].setVec(1,1);  		xform(mTexExtents[0], cos_ang, sin_ang, os, ot, ms, mt); -		xform(mTexExtents[1], cos_ang, sin_ang, os, ot, ms, mt);		 +		xform(mTexExtents[1], cos_ang, sin_ang, os, ot, ms, mt); +		 +		F32 es = vf.mTexCoordExtents[1].mV[0] - vf.mTexCoordExtents[0].mV[0] ; +		F32 et = vf.mTexCoordExtents[1].mV[1] - vf.mTexCoordExtents[0].mV[1] ; +		mTexExtents[0][0] *= es ; +		mTexExtents[1][0] *= es ; +		mTexExtents[0][1] *= et ; +		mTexExtents[1][1] *= et ;  	}  	mLastVertexBuffer = mVertexBuffer; diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index f0840774bd..51e76bcf9b 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -403,9 +403,9 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)  		{  			wcsncpy( mFilesW,L"untitled.jpeg", FILENAME_BUFFER_SIZE);	/*Flawfinder: ignore*/  		} -		mOFN.lpstrDefExt = L"jpeg"; +		mOFN.lpstrDefExt = L"jpg";  		mOFN.lpstrFilter = -			L"JPEG Images (*.jpeg)\0*.jpeg\0" \ +			L"JPEG Images (*.jpg *.jpeg)\0*.jpg;*.jpeg\0" \  			L"\0";  		break;  	case FFSAVE_AVI: diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index 4c17199895..4d252dc662 100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp @@ -41,35 +41,36 @@  // static -std::set<std::string> LLFirstUse::sConfigVariables; +//std::set<std::string> LLFirstUse::sConfigVariables; +std::set<std::string> LLFirstUse::sConfigVariablesEnabled;  // static -void LLFirstUse::addConfigVariable(const std::string& var) -{ -	sConfigVariables.insert(var); -} +//void LLFirstUse::addConfigVariable(const std::string& var) +//{ +//	sConfigVariables.insert(var); +//}  // static -void LLFirstUse::disableFirstUse() -{ -	// Set all first-use warnings to disabled -	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); -		 iter != sConfigVariables.end(); ++iter) -	{ -		gWarningSettings.setBOOL(*iter, FALSE); -	} -} +//void LLFirstUse::disableFirstUse() +//{ +//	// Set all first-use warnings to disabled +//	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); +//		 iter != sConfigVariables.end(); ++iter) +//	{ +//		gWarningSettings.setBOOL(*iter, FALSE); +//	} +//}  // static -void LLFirstUse::resetFirstUse() -{ -	// Set all first-use warnings to disabled -	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); -		 iter != sConfigVariables.end(); ++iter) -	{ -		gWarningSettings.setBOOL(*iter, TRUE); -	} -} +//void LLFirstUse::resetFirstUse() +//{ +//	// Set all first-use warnings to disabled +//	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); +//		 iter != sConfigVariables.end(); ++iter) +//	{ +//		gWarningSettings.setBOOL(*iter, TRUE); +//	} +//}  // static  void LLFirstUse::otherAvatarChatFirst(bool enable) @@ -151,13 +152,21 @@ void LLFirstUse::firstUseNotification(const std::string& control_var, bool enabl  	if (enable)  	{ +		if(sConfigVariablesEnabled.find(control_var) != sConfigVariablesEnabled.end()) +		{ +			return ; //already added +		} +  		if (gSavedSettings.getBOOL("EnableUIHints"))  		{  			LL_DEBUGS("LLFirstUse") << "Trigger first use notification " << notification_name << LL_ENDL;  			// if notification doesn't already exist and this notification hasn't been disabled...  			if (gWarningSettings.getBOOL(control_var)) -			{ // create new notification +			{  +				sConfigVariablesEnabled.insert(control_var) ; + +				// create new notification  				LLNotifications::instance().add(LLNotification::Params().name(notification_name).substitutions(args).payload(payload.with("control_var", control_var)));  			}  		} @@ -169,7 +178,6 @@ void LLFirstUse::firstUseNotification(const std::string& control_var, bool enabl  		// redundantly clear settings var here, in case there are no notifications to cancel  		gWarningSettings.setBOOL(control_var, FALSE);  	} -  }  // static diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h index 81659988e6..489f58626a 100644 --- a/indra/newview/llfirstuse.h +++ b/indra/newview/llfirstuse.h @@ -78,11 +78,11 @@ class LLFirstUse  public:  	// Add a config variable to be reset on resetFirstUse() -	static void addConfigVariable(const std::string& var); +	//static void addConfigVariable(const std::string& var);  	// Sets all controls back to show the dialogs. -	static void disableFirstUse(); -	static void resetFirstUse(); +	//static void disableFirstUse(); +	//static void resetFirstUse();  	static void otherAvatarChatFirst(bool enable = true);  	static void sit(bool enable = true); @@ -98,7 +98,8 @@ public:  protected:  	static void firstUseNotification(const std::string& control_var, bool enable, const std::string& notification_name, LLSD args = LLSD(), LLSD payload = LLSD()); -	static std::set<std::string> sConfigVariables; +	//static std::set<std::string> sConfigVariables; +	static std::set<std::string> sConfigVariablesEnabled;  	static void init();  	static bool processNotification(const LLSD& notify); diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 1b94d8cbcd..80920c80d6 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -83,7 +83,8 @@ LLFloaterMap::~LLFloaterMap()  BOOL LLFloaterMap::postBuild()  {  	mMap = getChild<LLNetMap>("Net Map"); -	mMap->setToolTipMsg(getString("ToolTipMsg"));	 +	mMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?  +		getString("AltToolTipMsg") : getString("ToolTipMsg"));  	sendChildToBack(mMap);  	mTextBoxNorth = getChild<LLTextBox> ("floater_map_north"); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 8c9dfe435a..724096b443 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1539,6 +1539,7 @@ LLPanelPreference::LLPanelPreference()  : LLPanel()  {  	mCommitCallbackRegistrar.add("Pref.setControlFalse",	boost::bind(&LLPanelPreference::setControlFalse,this, _2)); +	mCommitCallbackRegistrar.add("Pref.updateMediaAutoPlayCheckbox",	boost::bind(&LLPanelPreference::updateMediaAutoPlayCheckbox, this, _1));  }  //virtual @@ -1700,6 +1701,21 @@ void LLPanelPreference::setControlFalse(const LLSD& user_data)  		control->set(LLSD(FALSE));  } +void LLPanelPreference::updateMediaAutoPlayCheckbox(LLUICtrl* ctrl) +{ +	std::string name = ctrl->getName(); + +	// Disable "Allow Media to auto play" only when both +	// "Streaming Music" and "Media" are unchecked. STORM-513. +	if ((name == "enable_music") || (name == "enable_media")) +	{ +		bool music_enabled = getChild<LLCheckBoxCtrl>("enable_music")->get(); +		bool media_enabled = getChild<LLCheckBoxCtrl>("enable_media")->get(); + +		getChild<LLCheckBoxCtrl>("media_auto_play_btn")->setEnabled(music_enabled || media_enabled); +	} +} +  static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics");  BOOL LLPanelPreferenceGraphics::postBuild() diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 784033ae95..46014804ec 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -189,6 +189,10 @@ public:  	void setControlFalse(const LLSD& user_data);  	virtual void setHardwareDefaults(){}; +	// Disables "Allow Media to auto play" check box only when both +	// "Streaming Music" and "Media" are unchecked. Otherwise enables it. +	void updateMediaAutoPlayCheckbox(LLUICtrl* ctrl); +  	// This function squirrels away the current values of the controls so that  	// cancel() can restore them.  	virtual void saveSettings(); diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index b3b7645dd4..ada0dcf569 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -3,31 +3,25 @@   * @author Brad Kittenbrink <brad@lindenlab.com>   * @brief Quick and dirty console for region debug settings   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010-2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llfloaterregiondebugconsole.h b/indra/newview/llfloaterregiondebugconsole.h index 4171a4da6b..3aa525724e 100644 --- a/indra/newview/llfloaterregiondebugconsole.h +++ b/indra/newview/llfloaterregiondebugconsole.h @@ -3,31 +3,25 @@   * @author Brad Kittenbrink <brad@lindenlab.com>   * @brief Quick and dirty console for region debug settings   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010-2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 0931f77281..add591895b 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1363,6 +1363,36 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)  	floater->getChildView("auto_snapshot_check")->setVisible(		is_advance);  	floater->getChildView("image_quality_slider")->setVisible(	is_advance && show_slider); +	if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) +	{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot + +		LLSpinCtrl* width_ctrl = floater->getChild<LLSpinCtrl>("snapshot_width"); +		LLSpinCtrl* height_ctrl = floater->getChild<LLSpinCtrl>("snapshot_height"); + +		S32 width = gViewerWindow->getWindowWidthRaw(); +		S32 height = gViewerWindow->getWindowHeightRaw(); + +		width_ctrl->setMaxValue(width); +		 +		height_ctrl->setMaxValue(height); + +		if (width_ctrl->getValue().asInteger() > width) +		{ +			width_ctrl->forceSetValue(width); +		} +		if (height_ctrl->getValue().asInteger() > height) +		{ +			height_ctrl->forceSetValue(height); +		} +	} +	else +	{  +		LLSpinCtrl* width = floater->getChild<LLSpinCtrl>("snapshot_width"); +		width->setMaxValue(6016); +		LLSpinCtrl* height = floater->getChild<LLSpinCtrl>("snapshot_height"); +		height->setMaxValue(6016); +	} +		  	LLSnapshotLivePreview* previewp = getPreviewView(floater);  	BOOL got_bytes = previewp && previewp->getDataSize() > 0;  	BOOL got_snap = previewp && previewp->getSnapshotUpToDate(); @@ -1810,6 +1840,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL  		previewp->getSize(width, height); +		if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) +		{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot +			width = llmin(width, gViewerWindow->getWindowWidthRaw()); +			height = llmin(height, gViewerWindow->getWindowHeightRaw()); +		} + +		  		if(checkImageSize(previewp, width, height, TRUE, previewp->getMaxImageSize()))  		{  			resetSnapshotSizeOnUI(view, width, height) ; diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 62ba746a02..b3b1ce5743 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1854,31 +1854,9 @@ BOOL LLFolderView::handleRightMouseDown( S32 x, S32 y, MASK mask )  	{  		if (mCallbackRegistrar)  			mCallbackRegistrar->pushScope(); -		//menu->empty(); -		const LLView::child_list_t *list = menu->getChildList(); -		LLView::child_list_t::const_iterator menu_itor; -		for (menu_itor = list->begin(); menu_itor != list->end(); ++menu_itor) -		{ -			(*menu_itor)->setVisible(FALSE); -			(*menu_itor)->pushVisible(TRUE); -			(*menu_itor)->setEnabled(TRUE); -		} -		 -		// Successively filter out invalid options - -		U32 flags = FIRST_SELECTED_ITEM; -		for (selected_items_t::iterator item_itor = mSelectedItems.begin();  -			 item_itor != mSelectedItems.end();  -			 ++item_itor) -		{ -			LLFolderViewItem* selected_item = (*item_itor); -			selected_item->buildContextMenu(*menu, flags); -			flags = 0x0; -		} +		updateMenuOptions(menu); -		addNoOptions(menu); -  		menu->updateParent(LLMenuGL::sMenuContainer);  		LLMenuGL::showPopup(this, menu, x, y);  		if (mCallbackRegistrar) @@ -2365,6 +2343,45 @@ void LLFolderView::updateRenamerPosition()  	}  } +// Update visibility and availability (i.e. enabled/disabled) of context menu items. +void LLFolderView::updateMenuOptions(LLMenuGL* menu) +{ +	const LLView::child_list_t *list = menu->getChildList(); + +	LLView::child_list_t::const_iterator menu_itor; +	for (menu_itor = list->begin(); menu_itor != list->end(); ++menu_itor) +	{ +		(*menu_itor)->setVisible(FALSE); +		(*menu_itor)->pushVisible(TRUE); +		(*menu_itor)->setEnabled(TRUE); +	} + +	// Successively filter out invalid options + +	U32 flags = FIRST_SELECTED_ITEM; +	for (selected_items_t::iterator item_itor = mSelectedItems.begin(); +			item_itor != mSelectedItems.end(); +			++item_itor) +	{ +		LLFolderViewItem* selected_item = (*item_itor); +		selected_item->buildContextMenu(*menu, flags); +		flags = 0x0; +	} + +	addNoOptions(menu); +} + +// Refresh the context menu (that is already shown). +void LLFolderView::updateMenu() +{ +	LLMenuGL* menu = (LLMenuGL*)mPopupMenuHandle.get(); +	if (menu && menu->getVisible()) +	{ +		updateMenuOptions(menu); +		menu->needsArrange(); // update menu height if needed +	} +} +  bool LLFolderView::selectFirstItem()  {  	for (folders_t::iterator iter = mFolders.begin(); diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index afaac86b04..210ba9eb3c 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -269,7 +269,10 @@ public:  	virtual S32	notify(const LLSD& info) ;  	bool useLabelSuffix() { return mUseLabelSuffix; } +	void updateMenu(); +  private: +	void updateMenuOptions(LLMenuGL* menu);  	void updateRenamerPosition();  protected: diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 9623554200..0ef502b81b 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2719,6 +2719,15 @@ void LLIMMgr::inviteToSession(  		{  			LLFloaterReg::showInstance("incoming_call", payload, FALSE);  		} +		 +		// Add the caller to the Recent List here (at this point  +		// "incoming_call" floater is shown and the recipient can +		// reject the call), because even if a recipient will reject +		// the call, the caller should be added to the recent list +		// anyway. STORM-507. +		if(type == IM_SESSION_P2P_INVITE) +			LLRecentPeople::instance().add(caller_id); +		  		mPendingInvitations[session_id.asString()] = LLSD();  	}  } diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 91ede6d221..17d0b0ffbb 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -47,6 +47,7 @@  #include "llvoiceclient.h"  #include "llviewerobjectlist.h"  #include "lltransientfloatermgr.h" +#include "llnotificationsutil.h"  // Linden libraries  #include "llfloater.h" @@ -126,16 +127,20 @@ private:  	void onClickReport();  	void onClickFreeze();  	void onClickEject(); +	void onClickKick(); +	void onClickCSR();  	void onClickZoomIn();    	void onClickFindOnMap();  	bool onVisibleFindOnMap(); -	bool onVisibleFreezeEject(); +	bool onVisibleEject(); +	bool onVisibleFreeze();  	bool onVisibleZoomIn();  	void onClickMuteVolume();  	void onVolumeChange(const LLSD& data);  	bool enableMute();  	bool enableUnmute();  	bool enableTeleportOffer(); +	bool godModeEnabled();  	// Is used to determine if "Add friend" option should be enabled in gear menu  	bool isNotFriend(); @@ -214,20 +219,21 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)  	mCommitCallbackRegistrar.add("InspectAvatar.Pay",	boost::bind(&LLInspectAvatar::onClickPay, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.Share",	boost::bind(&LLInspectAvatar::onClickShare, this));  	mCommitCallbackRegistrar.add("InspectAvatar.ToggleMute",	boost::bind(&LLInspectAvatar::onToggleMute, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Freeze", -		boost::bind(&LLInspectAvatar::onClickFreeze, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Eject", -		boost::bind(&LLInspectAvatar::onClickEject, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.Freeze", boost::bind(&LLInspectAvatar::onClickFreeze, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.Eject", boost::bind(&LLInspectAvatar::onClickEject, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.Kick", boost::bind(&LLInspectAvatar::onClickKick, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.CSR", boost::bind(&LLInspectAvatar::onClickCSR, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.Report",	boost::bind(&LLInspectAvatar::onClickReport, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.FindOnMap",	boost::bind(&LLInspectAvatar::onClickFindOnMap, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.ZoomIn", boost::bind(&LLInspectAvatar::onClickZoomIn, this));  	mCommitCallbackRegistrar.add("InspectAvatar.DisableVoice", boost::bind(&LLInspectAvatar::toggleSelectedVoice, this, false));  	mCommitCallbackRegistrar.add("InspectAvatar.EnableVoice", boost::bind(&LLInspectAvatar::toggleSelectedVoice, this, true)); + +	mEnableCallbackRegistrar.add("InspectAvatar.EnableGod",	boost::bind(&LLInspectAvatar::godModeEnabled, this));	  	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFindOnMap",	boost::bind(&LLInspectAvatar::onVisibleFindOnMap, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFreezeEject",	 -		boost::bind(&LLInspectAvatar::onVisibleFreezeEject, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn",  -		boost::bind(&LLInspectAvatar::onVisibleZoomIn, this)); +	mEnableCallbackRegistrar.add("InspectAvatar.VisibleEject",	boost::bind(&LLInspectAvatar::onVisibleEject, this));	 +	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFreeze",	boost::bind(&LLInspectAvatar::onVisibleFreeze, this));	 +	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", boost::bind(&LLInspectAvatar::onVisibleZoomIn, this));  	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));  	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall));  	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableTeleportOffer", boost::bind(&LLInspectAvatar::enableTeleportOffer, this)); @@ -656,11 +662,18 @@ bool LLInspectAvatar::onVisibleFindOnMap()  	return gAgent.isGodlike() || is_agent_mappable(mAvatarID);  } -bool LLInspectAvatar::onVisibleFreezeEject() +bool LLInspectAvatar::onVisibleEject()  {  	return enable_freeze_eject( LLSD(mAvatarID) );  } +bool LLInspectAvatar::onVisibleFreeze() +{ +	// either user is a god and can do long distance freeze +	// or check for target proximity and permissions +	return gAgent.isGodlike() || enable_freeze_eject(LLSD(mAvatarID)); +} +  bool LLInspectAvatar::onVisibleZoomIn()  {  	return gObjectList.findObject(mAvatarID); @@ -704,7 +717,7 @@ void LLInspectAvatar::onClickShare()  void LLInspectAvatar::onToggleMute()  { -	LLMute mute(mAvatarID, mAvatarName.getLegacyName(), LLMute::AGENT); +	LLMute mute(mAvatarID, mAvatarName.mDisplayName, LLMute::AGENT);  	if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName))  	{ @@ -725,9 +738,41 @@ void LLInspectAvatar::onClickReport()  	closeFloater();  } +bool godlike_freeze(const LLSD& notification, const LLSD& response) +{ +	LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + +	switch (option) +	{ +	case 0: +		LLAvatarActions::freeze(avatar_id); +		break; +	case 1: +		LLAvatarActions::unfreeze(avatar_id); +		break; +	default: +		break; +	} + +	return false; +} +  void LLInspectAvatar::onClickFreeze()  { -	handle_avatar_freeze( LLSD(mAvatarID) ); +	if (gAgent.isGodlike()) +	{ +		// use godlike freeze-at-a-distance, with confirmation +		LLNotificationsUtil::add("FreezeAvatar", +			LLSD(), +			LLSD().with("avatar_id", mAvatarID), +			godlike_freeze); +	} +	else +	{ +		// use default "local" version of freezing that requires avatar to be in range +		handle_avatar_freeze( LLSD(mAvatarID) ); +	}  	closeFloater();  } @@ -737,6 +782,20 @@ void LLInspectAvatar::onClickEject()  	closeFloater();  } +void LLInspectAvatar::onClickKick() +{ +	LLAvatarActions::kick(mAvatarID); +	closeFloater(); +} + +void LLInspectAvatar::onClickCSR() +{ +	std::string name; +	gCacheName->getFullName(mAvatarID, name); +	LLAvatarActions::csr(mAvatarID, name); +	closeFloater(); +} +  void LLInspectAvatar::onClickZoomIn()   {  	handle_zoom_to_object(mAvatarID); @@ -785,6 +844,11 @@ bool LLInspectAvatar::enableTeleportOffer()  	return LLAvatarActions::canOfferTeleport(mAvatarID);  } +bool LLInspectAvatar::godModeEnabled() +{ +	return gAgent.isGodlike(); +} +  //////////////////////////////////////////////////////////////////////////////  // LLInspectAvatarUtil  ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 5108f68592..4c2e0fa709 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3230,7 +3230,10 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  	}  	else if(LLToolDragAndDrop::SOURCE_NOTECARD == source)  	{ -		accept = TRUE; +		// Don't allow placing an original item from a notecard to Current Outfit or an outfit folder +		// because they must contain only links to wearable items. +		accept = !(move_is_into_current_outfit || move_is_into_outfit); +  		if(drop)  		{  			copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(), diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index ef4774a06d..e22363c2f6 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -393,18 +393,22 @@ void LLInventoryFilter::setFilterUUID(const LLUUID& object_id)  void LLInventoryFilter::setFilterSubString(const std::string& string)  { -	if (mFilterSubString != string) +	std::string filter_sub_string_new = string; +	mFilterSubStringOrig = string; +	LLStringUtil::trimHead(filter_sub_string_new); +	LLStringUtil::toUpper(filter_sub_string_new); + +	if (mFilterSubString != filter_sub_string_new)  	{  		// hitting BACKSPACE, for example -		const BOOL less_restrictive = mFilterSubString.size() >= string.size() && !mFilterSubString.substr(0, string.size()).compare(string); +		const BOOL less_restrictive = mFilterSubString.size() >= filter_sub_string_new.size() +			&& !mFilterSubString.substr(0, filter_sub_string_new.size()).compare(filter_sub_string_new);  		// appending new characters -		const BOOL more_restrictive = mFilterSubString.size() < string.size() && !string.substr(0, mFilterSubString.size()).compare(mFilterSubString); +		const BOOL more_restrictive = mFilterSubString.size() < filter_sub_string_new.size() +			&& !filter_sub_string_new.substr(0, mFilterSubString.size()).compare(mFilterSubString); -		mFilterSubStringOrig = string; -		LLStringUtil::trimHead(mFilterSubStringOrig); -		mFilterSubString = mFilterSubStringOrig; -		LLStringUtil::toUpper(mFilterSubString); +		mFilterSubString = filter_sub_string_new;  		if (less_restrictive)  		{  			setModified(FILTER_LESS_RESTRICTIVE); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 5a9d1524f3..1dcb91ad4d 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -60,6 +60,7 @@ static const LLInventoryFVBridgeBuilder INVENTORY_BRIDGE_BUILDER;  //  // Bridge to support knowing when the inventory has changed.  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +  class LLInventoryPanelObserver : public LLInventoryObserver  {  public: @@ -73,9 +74,57 @@ protected:  	LLInventoryPanel* mIP;  }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLInvPanelComplObserver +// +// Calls specified callback when all specified items become complete. +// +// Usage: +// observer = new LLInvPanelComplObserver(boost::bind(onComplete)); +// inventory->addObserver(observer); +// observer->reset(); // (optional) +// observer->watchItem(incomplete_item1_id); +// observer->watchItem(incomplete_item2_id); +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLInvPanelComplObserver : public LLInventoryCompletionObserver +{ +public: +	typedef boost::function<void()> callback_t; + +	LLInvPanelComplObserver(callback_t cb) +	:	mCallback(cb) +	{ +	} + +	void reset(); + +private: +	/*virtual*/ void done(); + +	/// Called when all the items are complete. +	callback_t	mCallback; +}; + +void LLInvPanelComplObserver::reset() +{ +	mIncomplete.clear(); +	mComplete.clear(); +} + +void LLInvPanelComplObserver::done() +{ +	mCallback(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLInventoryPanel +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +  LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :	  	LLPanel(p),  	mInventoryObserver(NULL), +	mCompletionObserver(NULL),  	mFolderRoot(NULL),  	mScroller(NULL),  	mSortOrderSetting(p.sort_order_setting), @@ -152,6 +201,9 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)  	mInventoryObserver = new LLInventoryPanelObserver(this);  	mInventory->addObserver(mInventoryObserver); +	mCompletionObserver = new LLInvPanelComplObserver(boost::bind(&LLInventoryPanel::onItemsCompletion, this)); +	mInventory->addObserver(mCompletionObserver); +  	// Build view of inventory if we need default full hierarchy and inventory ready,  	// otherwise wait for idle callback.  	if (mBuildDefaultHierarchy && mInventory->isInventoryUsable() && !mViewsInitialized) @@ -189,7 +241,10 @@ LLInventoryPanel::~LLInventoryPanel()  	// LLView destructor will take care of the sub-views.  	mInventory->removeObserver(mInventoryObserver); +	mInventory->removeObserver(mCompletionObserver);  	delete mInventoryObserver; +	delete mCompletionObserver; +  	mScroller = NULL;  } @@ -654,6 +709,11 @@ void LLInventoryPanel::openStartFolderOrMyInventory()  	}  } +void LLInventoryPanel::onItemsCompletion() +{ +	if (mFolderRoot) mFolderRoot->updateMenu(); +} +  void LLInventoryPanel::openSelected()  {  	LLFolderViewItem* folder_item = mFolderRoot->getCurSelectedItem(); @@ -757,6 +817,19 @@ void LLInventoryPanel::clearSelection()  void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& items, BOOL user_action)  { +	// Schedule updating the folder view context menu when all selected items become complete (STORM-373). +	mCompletionObserver->reset(); +	for (std::deque<LLFolderViewItem*>::const_iterator it = items.begin(); it != items.end(); ++it) +	{ +		LLUUID id = (*it)->getListener()->getUUID(); +		LLViewerInventoryItem* inv_item = mInventory->getItem(id); + +		if (inv_item && !inv_item->isFinished()) +		{ +			mCompletionObserver->watchItem(id); +		} +	} +  	LLFolderView* fv = getRootFolder();  	if (fv->needsAutoRename()) // auto-selecting a new user-created asset and preparing to rename  	{ diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 6545fc0d5e..9da9f7d8ba 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -52,6 +52,7 @@ class LLIconCtrl;  class LLSaveFolderState;  class LLFilterEditor;  class LLTabContainer; +class LLInvPanelComplObserver;  class LLInventoryPanel : public LLPanel  { @@ -167,9 +168,11 @@ public:  protected:  	void openStartFolderOrMyInventory(); // open the first level of inventory +	void onItemsCompletion();			// called when selected items are complete  	LLInventoryModel*			mInventory;  	LLInventoryObserver*		mInventoryObserver; +	LLInvPanelComplObserver*	mCompletionObserver;  	BOOL 						mAllowMultiSelect;  	BOOL 						mShowItemLinkOverlays; // Shows link graphic over inventory item icons diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 43a16f8ed8..f1c7e952d1 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -901,32 +901,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VZ] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VZ] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  							}  						}  					} @@ -934,32 +934,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VX] > 0.f)  							{ -								renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VX] > 0.f)  							{ -								renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  							}  						}  					} @@ -967,32 +967,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +							renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VY] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +							renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VY] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  							}  						}  					} diff --git a/indra/newview/llmemoryview.cpp b/indra/newview/llmemoryview.cpp index 9a244e2562..7e9c3c84a7 100644 --- a/indra/newview/llmemoryview.cpp +++ b/indra/newview/llmemoryview.cpp @@ -37,9 +37,11 @@  #include <sstream>  #include <boost/algorithm/string/split.hpp> +#include "llmemory.h"  LLMemoryView::LLMemoryView(const LLMemoryView::Params& p)  :	LLView(p), +	mPaused(FALSE),  	//mDelay(120),      mAlloc(NULL)  { @@ -59,6 +61,7 @@ BOOL LLMemoryView::handleMouseDown(S32 x, S32 y, MASK mask)  	}  	else  	{ +		mPaused = !mPaused;  	}  	return TRUE;  } @@ -148,13 +151,14 @@ void LLMemoryView::draw()  	// cut off lines on bottom  	U32 max_lines = U32((height - 2 * line_height) / line_height); -    std::vector<LLWString>::const_iterator end = mLines.end(); +	y_pos = height - MARGIN_AMT - line_height; +    y_off = 0.f; + +#if !MEM_TRACK_MEM +	std::vector<LLWString>::const_iterator end = mLines.end();      if(mLines.size() > max_lines) {          end = mLines.begin() + max_lines;      } - -	y_pos = height - MARGIN_AMT - line_height; -    y_off = 0.f;      for (std::vector<LLWString>::const_iterator i = mLines.begin(); i != end; ++i)  	{  		font->render(*i, 0, MARGIN_AMT, y_pos -  y_off, @@ -169,6 +173,47 @@ void LLMemoryView::draw()  		y_off += line_height;  	} +#else +	LLMemTracker::getInstance()->preDraw(mPaused) ; + +	{ +		F32 x_pos = MARGIN_AMT ; +		U32 lines = 0 ; +		const char* str = LLMemTracker::getInstance()->getNextLine() ; +		while(str != NULL) +		{ +			lines++ ; +			font->renderUTF8(str, 0, x_pos, y_pos -  y_off, +				LLColor4::white, +				LLFontGL::LEFT,  +				LLFontGL::BASELINE, +				LLFontGL::NORMAL, +				LLFontGL::DROP_SHADOW, +				S32_MAX, +				target_width, +				NULL, FALSE); +		 +			str = LLMemTracker::getInstance()->getNextLine() ; +			y_off += line_height; + +			if(lines >= max_lines) +			{ +				lines = 0 ; +				x_pos += 512.f ; +				if(x_pos + 512.f > target_width) +				{ +					break ; +				} + +				y_pos = height - MARGIN_AMT - line_height; +				y_off = 0.f; +			} +		} +	} + +	LLMemTracker::getInstance()->postDraw() ; +#endif +  #if MEM_TRACK_TYPE  	S32 left, top, right, bottom; diff --git a/indra/newview/llmemoryview.h b/indra/newview/llmemoryview.h index 24ea058279..9bdc59ab10 100644 --- a/indra/newview/llmemoryview.h +++ b/indra/newview/llmemoryview.h @@ -55,6 +55,7 @@ public:  private:      std::vector<LLWString> mLines;  	LLAllocator* mAlloc; +	BOOL mPaused ;  }; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 38100aa6c5..afceb58ccf 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -143,6 +143,30 @@ void	LLNameListCtrl::mouseOverHighlightNthItem( S32 target_index )  	S32 cur_index = getHighlightedItemInx();  	if (cur_index != target_index)  	{ +		bool is_mouse_over_name_cell = false; + +		S32 mouse_x, mouse_y; +		LLUI::getMousePositionLocal(this, &mouse_x, &mouse_y); + +		S32 column_index = getColumnIndexFromOffset(mouse_x); +		LLScrollListItem* hit_item = hitItem(mouse_x, mouse_y); +		if (hit_item && column_index == mNameColumnIndex) +		{ +			// Get the name cell which is currently under the mouse pointer. +			LLScrollListCell* hit_cell = hit_item->getColumn(column_index); +			if (hit_cell) +			{ +				is_mouse_over_name_cell = getCellRect(cur_index, column_index).pointInRect(mouse_x, mouse_y); +			} +		} + +		// If the tool tip is visible and the mouse is over the currently highlighted item's name cell, +		// we should not reset the highlighted item index i.e. set mHighlightedItem = -1 +		// and should not increase the width of the text inside the cell because it may +		// overlap the tool tip icon. +		if (LLToolTipMgr::getInstance()->toolTipVisible() && is_mouse_over_name_cell) +			return; +  		if(0 <= cur_index && cur_index < (S32)getItemList().size())  		{  			LLScrollListItem* item = getItemList()[cur_index]; diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 1a8ec4991d..93039d935d 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -47,6 +47,7 @@  #include "llagentcamera.h"  #include "llappviewer.h" // for gDisconnected  #include "llcallingcard.h" // LLAvatarTracker +#include "llfloaterworldmap.h"  #include "lltracker.h"  #include "llsurface.h"  #include "llviewercamera.h" @@ -91,7 +92,8 @@ LLNetMap::LLNetMap (const Params & p)  	mObjectImagep(),  	mClosestAgentToCursor(),  	mClosestAgentAtLastRightClick(), -	mToolTipMsg() +	mToolTipMsg(), +	mPopupMenu(NULL)  {  	mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS);  	setScale(gSavedSettings.getF32("MiniMapScale")); @@ -102,6 +104,21 @@ LLNetMap::~LLNetMap()  	gSavedSettings.setF32("MiniMapScale", mScale);  } +BOOL LLNetMap::postBuild() +{ +	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; +	 +	registrar.add("Minimap.Zoom", boost::bind(&LLNetMap::handleZoom, this, _2)); +	registrar.add("Minimap.Tracker", boost::bind(&LLNetMap::handleStopTracking, this, _2)); + +	mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_mini_map.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	if (mPopupMenu && !LLTracker::isTracking(0)) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", false); +	} +	return TRUE; +} +  void LLNetMap::setScale( F32 scale )  {  	scale = llclamp(scale, MAP_SCALE_MIN, MAP_SCALE_MAX); @@ -354,16 +371,49 @@ void LLNetMap::draw()  				pos_map = globalPosToView(pos_global); +				LLUUID uuid(NULL);  				BOOL show_as_friend = FALSE;  				if( i < regionp->mMapAvatarIDs.count())  				{ -					show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(regionp->mMapAvatarIDs.get(i)) != NULL); +					uuid = regionp->mMapAvatarIDs.get(i); +					show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(uuid) != NULL);  				} + +				LLColor4 color = show_as_friend ? map_avatar_friend_color : map_avatar_color;  				LLWorldMapView::drawAvatar(  					pos_map.mV[VX], pos_map.mV[VY],  -					show_as_friend ? map_avatar_friend_color : map_avatar_color,  +					color,   					pos_map.mV[VZ], mDotRadius); +				if(uuid.notNull()) +				{ +					bool selected = false; +					uuid_vec_t::iterator sel_iter = gmSelected.begin(); +					for (; sel_iter != gmSelected.end(); sel_iter++) +					{ +						if(*sel_iter == uuid) +						{ +							selected = true; +							break; +						} +					} +					if(selected) +					{ +						if( (pos_map.mV[VX] < 0) || +							(pos_map.mV[VY] < 0) || +							(pos_map.mV[VX] >= getRect().getWidth()) || +							(pos_map.mV[VY] >= getRect().getHeight()) ) +						{ +							S32 x = llround( pos_map.mV[VX] ); +							S32 y = llround( pos_map.mV[VY] ); +							LLWorldMapView::drawTrackingCircle( getRect(), x, y, color, 1, 10); +						} else +						{ +							LLWorldMapView::drawTrackingDot(pos_map.mV[VX],pos_map.mV[VY],color,0.f); +						} +					} +				} +  				F32	dist_to_cursor = dist_vec(LLVector2(pos_map.mV[VX], pos_map.mV[VY]),  											  LLVector2(local_mouse_x,local_mouse_y));  				if(dist_to_cursor < min_pick_dist && dist_to_cursor < closest_dist) @@ -460,6 +510,13 @@ void LLNetMap::draw()  	gGL.popUIMatrix();  	LLUICtrl::draw(); + +	if (LLTracker::isTracking(0)) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", true); +	} +	 +  }  void LLNetMap::reshape(S32 width, S32 height, BOOL called_from_parent) @@ -600,7 +657,6 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, MASK mask )  	args["[REGION]"] = region_name;  	std::string msg = mToolTipMsg;  	LLStringUtil::format(msg, args); -  	LLToolTipMgr::instance().show(LLToolTip::Params()  		.message(msg)  		.sticky_rect(sticky_rect)); @@ -793,6 +849,9 @@ BOOL LLNetMap::handleMouseDown( S32 x, S32 y, MASK mask )  BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )  { +	if(abs(mMouseDown.mX-x)<3 && abs(mMouseDown.mY-y)<3) +		handleClick(x,y,mask); +  	if (hasMouseCapture())  	{  		if (mPanning) @@ -821,6 +880,53 @@ BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )  	return FALSE;  } +BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ +	if (mPopupMenu) +	{ +		mPopupMenu->buildDrawLabels(); +		mPopupMenu->updateParent(LLMenuGL::sMenuContainer); +		LLMenuGL::showPopup(this, mPopupMenu, x, y); +	} +	return TRUE; +} + +BOOL LLNetMap::handleClick(S32 x, S32 y, MASK mask) +{ +	// TODO: allow clicking an avatar on minimap to select avatar in the nearby avatar list +	// if(mClosestAgentToCursor.notNull()) +	//     mNearbyList->selectUser(mClosestAgentToCursor); +	// Needs a registered observer i guess to accomplish this without using +	// globals to tell the mNearbyList in llpeoplepanel to select the user +	return TRUE; +} + +BOOL LLNetMap::handleDoubleClick(S32 x, S32 y, MASK mask) +{ +	LLVector3d pos_global = viewPosToGlobal(x, y); +	 +	// If we're not tracking a beacon already, double-click will set one  +	if (!LLTracker::isTracking(NULL)) +	{ +		LLFloaterWorldMap* world_map = LLFloaterWorldMap::getInstance(); +		if (world_map) +		{ +			world_map->trackLocation(pos_global); +		} +	} +	 +	if (gSavedSettings.getBOOL("DoubleClickTeleport")) +	{ +		// If DoubleClickTeleport is on, double clicking the minimap will teleport there +		gAgent.teleportViaLocationLookAt(pos_global); +	} +	else  +	{ +		LLFloaterReg::showInstance("world_map"); +	} +	return TRUE; +} +  // static  bool LLNetMap::outsideSlop( S32 x, S32 y, S32 start_x, S32 start_y, S32 slop )  { @@ -871,3 +977,38 @@ BOOL LLNetMap::handleHover( S32 x, S32 y, MASK mask )  	return TRUE;  } + +void LLNetMap::handleZoom(const LLSD& userdata) +{ +	std::string level = userdata.asString(); +	 +	F32 scale = 0.0f; +	if (level == std::string("default")) +	{ +		LLControlVariable *pvar = gSavedSettings.getControl("MiniMapScale"); +		if(pvar) +		{ +			pvar->resetToDefault(); +			scale = gSavedSettings.getF32("MiniMapScale"); +		} +	} +	else if (level == std::string("close")) +		scale = LLNetMap::MAP_SCALE_MAX; +	else if (level == std::string("medium")) +		scale = LLNetMap::MAP_SCALE_MID; +	else if (level == std::string("far")) +		scale = LLNetMap::MAP_SCALE_MIN; +	if (scale != 0.0f) +	{ +		setScale(scale); +	} +} + +void LLNetMap::handleStopTracking (const LLSD& userdata) +{ +	if (mPopupMenu) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", false); +		LLTracker::stopTracking ((void*)LLTracker::isTracking(NULL)); +	} +} diff --git a/indra/newview/llnetmap.h b/indra/newview/llnetmap.h index e053b1c177..20fcee0814 100644 --- a/indra/newview/llnetmap.h +++ b/indra/newview/llnetmap.h @@ -39,6 +39,7 @@ class LLCoordGL;  class LLImageRaw;  class LLViewerTexture;  class LLFloaterMap; +class LLMenuGL;  class LLNetMap : public LLUICtrl  { @@ -72,7 +73,12 @@ public:  	/*virtual*/ BOOL	handleHover( S32 x, S32 y, MASK mask );  	/*virtual*/ BOOL	handleToolTip( S32 x, S32 y, MASK mask);  	/*virtual*/ void	reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); -	 + +	/*virtual*/ BOOL 	postBuild(); +	/*virtual*/ BOOL	handleRightMouseDown( S32 x, S32 y, MASK mask ); +	/*virtual*/ BOOL	handleClick(S32 x, S32 y, MASK mask); +	/*virtual*/ BOOL	handleDoubleClick( S32 x, S32 y, MASK mask ); +  	void			setScale( F32 scale );  	void			setToolTipMsg(const std::string& msg) { mToolTipMsg = msg; }  	void			renderScaledPointGlobal( const LLVector3d& pos, const LLColor4U &color, F32 radius ); @@ -120,6 +126,16 @@ private:  	LLUUID			mClosestAgentAtLastRightClick;  	std::string		mToolTipMsg; + +public: +	void			setSelected(uuid_vec_t uuids) { gmSelected=uuids; }; + +private: +	void handleZoom(const LLSD& userdata); +	void handleStopTracking (const LLSD& userdata); + +	LLMenuGL*		mPopupMenu; +	uuid_vec_t		gmSelected;  }; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 94b2340c93..73c4722b82 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -625,10 +625,15 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g  	getChild<LLUICtrl>("sl_groups")->setValue(groups);  } -void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group )
 -{
 -	LLStringUtil::format_map_t args;
 -
 +static void got_full_name_callback( LLHandle<LLPanel> profile_panel_handle, const std::string& full_name ) +{ +	if (profile_panel_handle.isDead() ) return; + +	LLPanelAvatarProfile* profile_panel = dynamic_cast<LLPanelAvatarProfile*>(profile_panel_handle.get()); +	if ( ! profile_panel ) return; + +	LLStringUtil::format_map_t args; +  	std::string name;  	if (LLAvatarNameCache::useDisplayNames())  	{ @@ -637,21 +642,21 @@ void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::  	else  	{  		name = full_name; -	}
 -
 -	args["[NAME]"] = name;
 -
 -	std::string linden_name = getString("name_text_args", args);
 -	getChild<LLUICtrl>("name_descr_text")->setValue(linden_name);
 -}
 +	} + +	args["[NAME]"] = name; + +	std::string linden_name = profile_panel->getString("name_text_args", args); +	profile_panel->getChild<LLUICtrl>("name_descr_text")->setValue(linden_name); +}  void LLPanelAvatarProfile::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)  { -	LLStringUtil::format_map_t args;
 -	args["[DISPLAY_NAME]"] = av_name.mDisplayName;
 -
 -	std::string display_name = getString("display_name_text_args", args);
 -	getChild<LLUICtrl>("display_name_descr_text")->setValue(display_name);
 +	LLStringUtil::format_map_t args; +	args["[DISPLAY_NAME]"] = av_name.mDisplayName; + +	std::string display_name = getString("display_name_text_args", args); +	getChild<LLUICtrl>("display_name_descr_text")->setValue(display_name);  }  void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) @@ -667,22 +672,23 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)  	}  	// ask (asynchronously) for the avatar name -	std::string full_name;
 -	if (gCacheName->getFullName(avatar_data->agent_id, full_name))
 -	{
 -		// name in cache, call callback directly
 -		got_full_name_callback( avatar_data->agent_id, full_name, false );
 -	}
 -	else
 -	{
 -		// not in cache, lookup name 
 -		gCacheName->get(avatar_data->agent_id, false, boost::bind( &LLPanelAvatarProfile::got_full_name_callback, this, _1, _2, _3 ));
 -	}
 -
 -	// get display name
 +	LLHandle<LLPanel> profile_panel_handle = getHandle(); +	std::string full_name; +	if (gCacheName->getFullName(avatar_data->agent_id, full_name)) +	{ +		// name in cache, call callback directly +		got_full_name_callback( profile_panel_handle, full_name ); +	} +	else +	{ +		// not in cache, lookup name  +		gCacheName->get(avatar_data->agent_id, false, boost::bind( got_full_name_callback, profile_panel_handle, _2 )); +	} + +	// get display name  	LLAvatarNameCache::get(avatar_data->avatar_id, -		boost::bind(&LLPanelAvatarProfile::onNameCache, this, _1, _2));
 -
 +		boost::bind(&LLPanelAvatarProfile::onNameCache, this, _1, _2)); +  	args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());  	std::string register_date = getString("RegisterDateFormat", args);  	getChild<LLUICtrl>("register_date")->setValue(register_date ); diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 070fe4579a..e95441cd58 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -1,298 +1,297 @@ -/** 
 - * @file llpanelavatar.h
 - * @brief LLPanelAvatar and related class definitions
 - *
 - * $LicenseInfo:firstyear=2004&license=viewerlgpl$
 - * Second Life Viewer Source Code
 - * Copyright (C) 2010, Linden Research, Inc.
 - * 
 - * This library is free software; you can redistribute it and/or
 - * modify it under the terms of the GNU Lesser General Public
 - * License as published by the Free Software Foundation;
 - * version 2.1 of the License only.
 - * 
 - * This library is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 - * Lesser General Public License for more details.
 - * 
 - * You should have received a copy of the GNU Lesser General Public
 - * License along with this library; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 - * 
 - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
 - * $/LicenseInfo$
 - */
 -
 -#ifndef LL_LLPANELAVATAR_H
 -#define LL_LLPANELAVATAR_H
 -
 -#include "llpanel.h"
 -#include "llavatarpropertiesprocessor.h"
 -#include "llcallingcard.h"
 -#include "llvoiceclient.h"
 -#include "llavatarnamecache.h"
 -
 -class LLComboBox;
 -class LLLineEditor;
 -
 -enum EOnlineStatus
 -{
 -	ONLINE_STATUS_NO      = 0,
 -	ONLINE_STATUS_YES     = 1
 -};
 -
 -/**
 -* Base class for any Profile View or My Profile Panel.
 -*/
 -class LLPanelProfileTab
 -	: public LLPanel
 -	, public LLAvatarPropertiesObserver
 -{
 -public:
 -
 -	/**
 -	 * Sets avatar ID, sets panel as observer of avatar related info replies from server.
 -	 */
 -	virtual void setAvatarId(const LLUUID& id);
 -
 -	/**
 -	 * Returns avatar ID.
 -	 */
 -	virtual const LLUUID& getAvatarId() { return mAvatarId; }
 -
 -	/**
 -	 * Sends update data request to server.
 -	 */
 -	virtual void updateData() = 0;
 -
 -	/**
 -	 * Clears panel data if viewing avatar info for first time and sends update data request.
 -	 */
 -	virtual void onOpen(const LLSD& key);
 -
 -	/**
 -	 * Profile tabs should close any opened panels here.
 -	 *
 -	 * Called from LLPanelProfile::onOpen() before opening new profile.
 -	 * See LLPanelPicks::onClosePanel for example. LLPanelPicks closes picture info panel
 -	 * before new profile is displayed, otherwise new profile will 
 -	 * be hidden behind picture info panel.
 -	 */
 -	virtual void onClosePanel() {}
 -
 -	/**
 -	 * Resets controls visibility, state, etc.
 -	 */
 -	virtual void resetControls(){};
 -
 -	/**
 -	 * Clears all data received from server.
 -	 */
 -	virtual void resetData(){};
 -
 -	/*virtual*/ ~LLPanelProfileTab();
 -
 -protected:
 -
 -	LLPanelProfileTab();
 -
 -	/**
 -	 * Scrolls panel to top when viewing avatar info for first time.
 -	 */
 -	void scrollToTop();
 -
 -	virtual void onMapButtonClick();
 -
 -	virtual void updateButtons();
 -
 -private:
 -
 -	LLUUID mAvatarId;
 -};
 -
 -/**
 -* Panel for displaying Avatar's first and second life related info.
 -*/
 -class LLPanelAvatarProfile
 -	: public LLPanelProfileTab
 -	, public LLFriendObserver
 -	, public LLVoiceClientStatusObserver
 -{
 -public:
 -	LLPanelAvatarProfile();
 -	/*virtual*/ ~LLPanelAvatarProfile();
 -
 -	/*virtual*/ void onOpen(const LLSD& key);
 -
 -	/**
 -	 * LLFriendObserver trigger
 -	 */
 -	virtual void changed(U32 mask);
 -
 -	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
 -	// button when voice is available
 -	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
 -
 -	/*virtual*/ void setAvatarId(const LLUUID& id);
 -
 -	/**
 -	 * Processes data received from server.
 -	 */
 -	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
 -
 -	/*virtual*/ BOOL postBuild();
 -
 -	/*virtual*/ void updateData();
 -
 -	/*virtual*/ void resetControls();
 -
 -	/*virtual*/ void resetData();
 -
 -protected:
 -
 -	/**
 -	 * Process profile related data received from server.
 -	 */
 -	virtual void processProfileProperties(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Processes group related data received from server.
 -	 */
 -	virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
 -
 -	/**
 -	 * Fills common for Avatar profile and My Profile fields.
 -	 */
 -	virtual void fillCommonData(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Fills partner data.
 -	 */
 -	virtual void fillPartnerData(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Fills account status.
 -	 */
 -	virtual void fillAccountStatus(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Opens "Pay Resident" dialog.
 -	 */
 -	void pay();
 -
 -	/**
 -	 * opens inventory and IM for sharing items
 -	 */
 -	void share();
 -
 -	/**
 -	 * Add/remove resident to/from your block list.
 -	 */
 -	void toggleBlock();
 -
 -	void kick();
 -	void freeze();
 -	void unfreeze();
 -	void csr();
 -	
 -	bool enableShowOnMap();
 -	bool enableBlock();
 -	bool enableUnblock();
 -	bool enableGod();
 -
 -	void onSeeProfileBtnClick();
 -	void onAddFriendButtonClick();
 -	void onIMButtonClick();
 -	void onCallButtonClick();
 -	void onTeleportButtonClick();
 -	void onShareButtonClick();
 -
 -private:
 -	void got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group );
 -	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
 -
 -	typedef std::map< std::string,LLUUID>	group_map_t;
 -	group_map_t 			mGroups;
 -};
 -
 -/**
 - * Panel for displaying own first and second life related info.
 - */
 -class LLPanelMyProfile
 -	: public LLPanelAvatarProfile
 -{
 -public:
 -	LLPanelMyProfile();
 -
 -	/*virtual*/ BOOL postBuild();
 -
 -protected:
 -
 -	/*virtual*/ void onOpen(const LLSD& key);
 -
 -	/*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data);
 -
 -	/*virtual*/ void resetControls();
 -
 -protected:
 -	void onStatusMessageChanged();
 -};
 -
 -/**
 - * Panel for displaying Avatar's notes and modifying friend's rights.
 - */
 -class LLPanelAvatarNotes 
 -	: public LLPanelProfileTab
 -	, public LLFriendObserver
 -	, public LLVoiceClientStatusObserver
 -{
 -public:
 -	LLPanelAvatarNotes();
 -	/*virtual*/ ~LLPanelAvatarNotes();
 -
 -	virtual void setAvatarId(const LLUUID& id);
 -
 -	/** 
 -	 * LLFriendObserver trigger
 -	 */
 -	virtual void changed(U32 mask);
 -
 -	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
 -	// button when voice is available
 -	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
 -
 -	/*virtual*/ void onOpen(const LLSD& key);
 -
 -	/*virtual*/ BOOL postBuild();
 -
 -	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
 -
 -	/*virtual*/ void updateData();
 -
 -protected:
 -
 -	/*virtual*/ void resetControls();
 -
 -	/*virtual*/ void resetData();
 -
 -	/**
 -	 * Fills rights data for friends.
 -	 */
 -	void fillRightsData();
 -
 -	void rightsConfirmationCallback(const LLSD& notification,
 -			const LLSD& response, S32 rights);
 -	void confirmModifyRights(bool grant, S32 rights);
 -	void onCommitRights();
 -	void onCommitNotes();
 -
 -	void onAddFriendButtonClick();
 -	void onIMButtonClick();
 -	void onCallButtonClick();
 -	void onTeleportButtonClick();
 -	void onShareButtonClick();
 -	void enableCheckboxes(bool enable);
 -};
 -
 -#endif // LL_LLPANELAVATAR_H
 +/**  + * @file llpanelavatar.h + * @brief LLPanelAvatar and related class definitions + * + * $LicenseInfo:firstyear=2004&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELAVATAR_H +#define LL_LLPANELAVATAR_H + +#include "llpanel.h" +#include "llavatarpropertiesprocessor.h" +#include "llcallingcard.h" +#include "llvoiceclient.h" +#include "llavatarnamecache.h" + +class LLComboBox; +class LLLineEditor; + +enum EOnlineStatus +{ +	ONLINE_STATUS_NO      = 0, +	ONLINE_STATUS_YES     = 1 +}; + +/** +* Base class for any Profile View or My Profile Panel. +*/ +class LLPanelProfileTab +	: public LLPanel +	, public LLAvatarPropertiesObserver +{ +public: + +	/** +	 * Sets avatar ID, sets panel as observer of avatar related info replies from server. +	 */ +	virtual void setAvatarId(const LLUUID& id); + +	/** +	 * Returns avatar ID. +	 */ +	virtual const LLUUID& getAvatarId() { return mAvatarId; } + +	/** +	 * Sends update data request to server. +	 */ +	virtual void updateData() = 0; + +	/** +	 * Clears panel data if viewing avatar info for first time and sends update data request. +	 */ +	virtual void onOpen(const LLSD& key); + +	/** +	 * Profile tabs should close any opened panels here. +	 * +	 * Called from LLPanelProfile::onOpen() before opening new profile. +	 * See LLPanelPicks::onClosePanel for example. LLPanelPicks closes picture info panel +	 * before new profile is displayed, otherwise new profile will  +	 * be hidden behind picture info panel. +	 */ +	virtual void onClosePanel() {} + +	/** +	 * Resets controls visibility, state, etc. +	 */ +	virtual void resetControls(){}; + +	/** +	 * Clears all data received from server. +	 */ +	virtual void resetData(){}; + +	/*virtual*/ ~LLPanelProfileTab(); + +protected: + +	LLPanelProfileTab(); + +	/** +	 * Scrolls panel to top when viewing avatar info for first time. +	 */ +	void scrollToTop(); + +	virtual void onMapButtonClick(); + +	virtual void updateButtons(); + +private: + +	LLUUID mAvatarId; +}; + +/** +* Panel for displaying Avatar's first and second life related info. +*/ +class LLPanelAvatarProfile +	: public LLPanelProfileTab +	, public LLFriendObserver +	, public LLVoiceClientStatusObserver +{ +public: +	LLPanelAvatarProfile(); +	/*virtual*/ ~LLPanelAvatarProfile(); + +	/*virtual*/ void onOpen(const LLSD& key); + +	/** +	 * LLFriendObserver trigger +	 */ +	virtual void changed(U32 mask); + +	// Implements LLVoiceClientStatusObserver::onChange() to enable the call +	// button when voice is available +	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + +	/*virtual*/ void setAvatarId(const LLUUID& id); + +	/** +	 * Processes data received from server. +	 */ +	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type); + +	/*virtual*/ BOOL postBuild(); + +	/*virtual*/ void updateData(); + +	/*virtual*/ void resetControls(); + +	/*virtual*/ void resetData(); + +protected: + +	/** +	 * Process profile related data received from server. +	 */ +	virtual void processProfileProperties(const LLAvatarData* avatar_data); + +	/** +	 * Processes group related data received from server. +	 */ +	virtual void processGroupProperties(const LLAvatarGroups* avatar_groups); + +	/** +	 * Fills common for Avatar profile and My Profile fields. +	 */ +	virtual void fillCommonData(const LLAvatarData* avatar_data); + +	/** +	 * Fills partner data. +	 */ +	virtual void fillPartnerData(const LLAvatarData* avatar_data); + +	/** +	 * Fills account status. +	 */ +	virtual void fillAccountStatus(const LLAvatarData* avatar_data); + +	/** +	 * Opens "Pay Resident" dialog. +	 */ +	void pay(); + +	/** +	 * opens inventory and IM for sharing items +	 */ +	void share(); + +	/** +	 * Add/remove resident to/from your block list. +	 */ +	void toggleBlock(); + +	void kick(); +	void freeze(); +	void unfreeze(); +	void csr(); +	 +	bool enableShowOnMap(); +	bool enableBlock(); +	bool enableUnblock(); +	bool enableGod(); + +	void onSeeProfileBtnClick(); +	void onAddFriendButtonClick(); +	void onIMButtonClick(); +	void onCallButtonClick(); +	void onTeleportButtonClick(); +	void onShareButtonClick(); + +private: +	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name); + +	typedef std::map< std::string,LLUUID>	group_map_t; +	group_map_t 			mGroups; +}; + +/** + * Panel for displaying own first and second life related info. + */ +class LLPanelMyProfile +	: public LLPanelAvatarProfile +{ +public: +	LLPanelMyProfile(); + +	/*virtual*/ BOOL postBuild(); + +protected: + +	/*virtual*/ void onOpen(const LLSD& key); + +	/*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data); + +	/*virtual*/ void resetControls(); + +protected: +	void onStatusMessageChanged(); +}; + +/** + * Panel for displaying Avatar's notes and modifying friend's rights. + */ +class LLPanelAvatarNotes  +	: public LLPanelProfileTab +	, public LLFriendObserver +	, public LLVoiceClientStatusObserver +{ +public: +	LLPanelAvatarNotes(); +	/*virtual*/ ~LLPanelAvatarNotes(); + +	virtual void setAvatarId(const LLUUID& id); + +	/**  +	 * LLFriendObserver trigger +	 */ +	virtual void changed(U32 mask); + +	// Implements LLVoiceClientStatusObserver::onChange() to enable the call +	// button when voice is available +	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + +	/*virtual*/ void onOpen(const LLSD& key); + +	/*virtual*/ BOOL postBuild(); + +	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type); + +	/*virtual*/ void updateData(); + +protected: + +	/*virtual*/ void resetControls(); + +	/*virtual*/ void resetData(); + +	/** +	 * Fills rights data for friends. +	 */ +	void fillRightsData(); + +	void rightsConfirmationCallback(const LLSD& notification, +			const LLSD& response, S32 rights); +	void confirmModifyRights(bool grant, S32 rights); +	void onCommitRights(); +	void onCommitNotes(); + +	void onAddFriendButtonClick(); +	void onIMButtonClick(); +	void onCallButtonClick(); +	void onTeleportButtonClick(); +	void onShareButtonClick(); +	void enableCheckboxes(bool enable); +}; + +#endif // LL_LLPANELAVATAR_H diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index c83176d980..0c3f2f3e31 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -118,18 +118,6 @@ LLPanelMainInventory::LLPanelMainInventory()  	mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));  	mCommitCallbackRegistrar.add("Inventory.Share",  boost::bind(&LLAvatarActions::shareWithAvatars)); -	// Controls -	// *TODO: Just use persistant settings for each of these -	U32 sort_order = gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER); -	BOOL sort_by_name = ! ( sort_order & LLInventoryFilter::SO_DATE ); -	BOOL sort_folders_by_name = ( sort_order & LLInventoryFilter::SO_FOLDERS_BY_NAME ); -	BOOL sort_system_folders_to_top = ( sort_order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP ); -	 -	gSavedSettings.declareBOOL("Inventory.SortByName", sort_by_name, "Declared in code", FALSE); -	gSavedSettings.declareBOOL("Inventory.SortByDate", !sort_by_name, "Declared in code", FALSE); -	gSavedSettings.declareBOOL("Inventory.FoldersAlwaysByName", sort_folders_by_name, "Declared in code", FALSE); -	gSavedSettings.declareBOOL("Inventory.SystemFoldersToTop", sort_system_folders_to_top, "Declared in code", FALSE); -	  	mSavedFolderState = new LLSaveFolderState();  	mSavedFolderState->setApply(FALSE);  } @@ -325,67 +313,41 @@ void LLPanelMainInventory::resetFilters()  void LLPanelMainInventory::setSortBy(const LLSD& userdata)  { -	std::string sort_field = userdata.asString(); -	if (sort_field == "name") +	U32 sort_order_mask = getActivePanel()->getSortOrder(); +	std::string sort_type = userdata.asString(); +	if (sort_type == "name")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		order &= ~LLInventoryFilter::SO_DATE; - -		getActivePanel()->setSortOrder( order ); - -		gSavedSettings.setU32("InventorySortOrder", order); - -		gSavedSettings.setBOOL("Inventory.SortByName", TRUE ); -		gSavedSettings.setBOOL("Inventory.SortByDate", FALSE ); +		sort_order_mask &= ~LLInventoryFilter::SO_DATE;  	} -	else if (sort_field == "date") +	else if (sort_type == "date")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		order |= LLInventoryFilter::SO_DATE; - -		getActivePanel()->setSortOrder( order ); - -		gSavedSettings.setU32("InventorySortOrder", order); - -		gSavedSettings.setBOOL("Inventory.SortByName", FALSE ); -		gSavedSettings.setBOOL("Inventory.SortByDate", TRUE ); +		sort_order_mask |= LLInventoryFilter::SO_DATE;  	} -	else if (sort_field == "foldersalwaysbyname") +	else if (sort_type == "foldersalwaysbyname")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		if ( order & LLInventoryFilter::SO_FOLDERS_BY_NAME ) +		if ( sort_order_mask & LLInventoryFilter::SO_FOLDERS_BY_NAME )  		{ -			order &= ~LLInventoryFilter::SO_FOLDERS_BY_NAME; - -			gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", FALSE ); +			sort_order_mask &= ~LLInventoryFilter::SO_FOLDERS_BY_NAME;  		}  		else  		{ -			order |= LLInventoryFilter::SO_FOLDERS_BY_NAME; - -			gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", TRUE ); +			sort_order_mask |= LLInventoryFilter::SO_FOLDERS_BY_NAME;  		} -		getActivePanel()->setSortOrder( order );  	} -	else if (sort_field == "systemfolderstotop") +	else if (sort_type == "systemfolderstotop")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		if ( order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP ) +		if ( sort_order_mask & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP )  		{ -			order &= ~LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP; - -			gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", FALSE ); +			sort_order_mask &= ~LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;  		}  		else  		{ -			order |= LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP; - -			gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", TRUE ); +			sort_order_mask |= LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;  		} -		getActivePanel()->setSortOrder( order ); - -		gSavedSettings.setU32("InventorySortOrder", order);  	} + +	getActivePanel()->setSortOrder(sort_order_mask); +	gSavedSettings.setU32("InventorySortOrder", sort_order_mask);  }  // static @@ -1013,6 +975,11 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)  		const LLSD arg = "date";  		setSortBy(arg);  	} +	if (command_name == "sort_folders_by_name") +	{ +		const LLSD arg = "foldersalwaysbyname"; +		setSortBy(arg); +	}  	if (command_name == "sort_system_folders_to_top")  	{  		const LLSD arg = "systemfolderstotop"; @@ -1193,24 +1160,26 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)  BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)  { +	U32 sort_order_mask = getActivePanel()->getSortOrder();  	const std::string command_name = userdata.asString(); -  	if (command_name == "sort_by_name")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		return ~order & LLInventoryFilter::SO_DATE; +		return ~sort_order_mask & LLInventoryFilter::SO_DATE;  	}  	if (command_name == "sort_by_recent")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		return order & LLInventoryFilter::SO_DATE; +		return sort_order_mask & LLInventoryFilter::SO_DATE; +	} + +	if (command_name == "sort_folders_by_name") +	{ +		return sort_order_mask & LLInventoryFilter::SO_FOLDERS_BY_NAME;  	}  	if (command_name == "sort_system_folders_to_top")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		return order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP; +		return sort_order_mask & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;  	}  	return FALSE; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 54198d6aa4..b07a46a222 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -54,6 +54,7 @@  #include "llgroupactions.h"  #include "llgrouplist.h"  #include "llinventoryobserver.h" +#include "llnetmap.h"  #include "llpanelpeoplemenus.h"  #include "llsidetray.h"  #include "llsidetraypanelcontainer.h" @@ -494,7 +495,8 @@ LLPanelPeople::LLPanelPeople()  		mNearbyGearButton(NULL),  		mFriendsGearButton(NULL),  		mGroupsGearButton(NULL), -		mRecentGearButton(NULL) +		mRecentGearButton(NULL), +		mMiniMap(NULL)  {  	mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList,	this));  	mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList,	this)); @@ -567,6 +569,9 @@ BOOL LLPanelPeople::postBuild()  	mNearbyList->setNoItemsMsg(getString("no_one_near"));  	mNearbyList->setNoFilteredItemsMsg(getString("no_one_filtered_near"));  	mNearbyList->setShowIcons("NearbyListShowIcons"); +	mMiniMap = (LLNetMap*)getChildView("Net Map",true); +	mMiniMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?  +		getString("AltMiniMapToolTipMsg") :	getString("MiniMapToolTipMsg"));  	mRecentList = getChild<LLPanel>(RECENT_TAB_NAME)->getChild<LLAvatarList>("avatar_list");  	mRecentList->setNoItemsCommentText(getString("no_recent_people")); @@ -1088,6 +1093,12 @@ void LLPanelPeople::onAvatarListDoubleClicked(LLUICtrl* ctrl)  void LLPanelPeople::onAvatarListCommitted(LLAvatarList* list)  { +	if (getActiveTabName() == NEARBY_TAB_NAME) +	{ +		uuid_vec_t selected_uuids; +		getCurrentItemIDs(selected_uuids); +		mMiniMap->setSelected(selected_uuids); +	} else  	// Make sure only one of the friends lists (online/all) has selection.  	if (getActiveTabName() == FRIENDS_TAB_NAME)  	{ diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index b496bb3779..46c58cd139 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -142,6 +142,7 @@ private:  	LLAvatarList*			mNearbyList;  	LLAvatarList*			mRecentList;  	LLGroupList*			mGroupList; +	LLNetMap*				mMiniMap;  	LLHandle<LLView>		mGroupPlusMenuHandle;  	LLHandle<LLView>		mNearbyViewSortMenuHandle; diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 16284d1a7e..8e5beb33ce 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -1597,7 +1597,7 @@ std::string LLPreviewGesture::getLabel(std::vector<std::string> labels)  	if(v_labels[0]=="Chat")  	{ -		result=LLTrans::getString("Chat"); +		result=LLTrans::getString("Chat Message");  	}      else if(v_labels[0]=="Sound")	  	{ diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 7657cccd4e..6cfb708112 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -273,6 +273,8 @@ void LLPreviewTexture::saveAs()  	mSaveFileName = file_picker.getFirstFile();  	mLoadingFullImage = TRUE;  	getWindow()->incBusyCount(); + +	mImage->forceToSaveRawImage(0) ;//re-fetch the raw image if the old one is removed.  	mImage->setLoadedCallback( LLPreviewTexture::onFileLoadedForSave,   								0, TRUE, FALSE, new LLUUID( mItemUUID ), &mCallbackTextureList );  } diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 19d1bdee86..eb537c7d7b 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -141,6 +141,8 @@ public:  	void			toggleTabDocked(); +	BOOL			handleScrollWheel(S32 x, S32 y, S32 clicks); +  	LLPanel *getPanel();  private:  	std::string mTabTitle; @@ -269,6 +271,15 @@ void LLSideTrayTab::toggleTabDocked()  	LLFloaterReg::toggleInstance("side_bar_tab", tab_name);  } +BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks) +{ +	// Let children handle the event +	LLUICtrl::handleScrollWheel(x, y, clicks); + +	// and then eat it to prevent in-world scrolling (STORM-351). +	return TRUE; +} +  void LLSideTrayTab::dock(LLFloater* floater_tab)  {  	LLSideTray* side_tray = getSideTray(); diff --git a/indra/newview/llsimplestat.h b/indra/newview/llsimplestat.h index a90e503adb..9d7780c4f9 100644 --- a/indra/newview/llsimplestat.h +++ b/indra/newview/llsimplestat.h @@ -2,31 +2,25 @@   * @file llsimplestat.h   * @brief Runtime statistics accumulation.   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 6ddbdbf783..f54214b95c 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -326,6 +326,7 @@ bool LLTextureCacheRemoteWorker::doRead()  	// First state / stage : find out if the file is local  	if (mState == INIT)  	{ +#if 0  		std::string filename = mCache->getLocalFileName(mID);	  		// Is it a JPEG2000 file?   		{ @@ -360,6 +361,11 @@ bool LLTextureCacheRemoteWorker::doRead()  		}  		// Determine the next stage: if we found a file, then LOCAL else CACHE  		mState = (local_size > 0 ? LOCAL : CACHE); + +		llassert_always(mState == CACHE) ; +#else +		mState = CACHE; +#endif  	}  	// Second state / stage : if the file is local, load it and leave diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 4f63abb152..18c3a3b87d 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -1141,7 +1141,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  			//1, not openning too many file descriptors at the same time;  			//2, control the traffic of http so udp gets bandwidth.  			// -			static const S32 MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE = 32 ; +			static const S32 MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE = 8 ;  			if(mFetcher->getNumHTTPRequests() > MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE)  			{  				return false ; //wait. @@ -1822,6 +1822,7 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image  	  mImageDecodeThread(imagedecodethread),  	  mTextureBandwidth(0),  	  mHTTPTextureBits(0), +	  mTotalHTTPRequests(0),  	  mCurlGetRequest(NULL),  	  mQAMode(qa_mode)  { @@ -1973,6 +1974,7 @@ void LLTextureFetch::addToHTTPQueue(const LLUUID& id)  {  	LLMutexLock lock(&mNetworkQueueMutex);  	mHTTPTextureQueue.insert(id); +	mTotalHTTPRequests++;  }  void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32 received_size) @@ -2035,6 +2037,15 @@ S32 LLTextureFetch::getNumHTTPRequests()  	return size ;  } +U32 LLTextureFetch::getTotalNumHTTPRequests() +{ +	mNetworkQueueMutex.lock() ; +	U32 size = mTotalHTTPRequests ; +	mNetworkQueueMutex.unlock() ; + +	return size ; +} +  // call lockQueue() first!  LLTextureFetchWorker* LLTextureFetch::getWorkerAfterLock(const LLUUID& id)  { diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index ad00a7ea36..d101da1f4b 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -79,6 +79,7 @@ public:  	void dump();  	S32 getNumRequests() ;  	S32 getNumHTTPRequests() ; +	U32 getTotalNumHTTPRequests() ;  	// Public for access by callbacks      S32 getPending(); @@ -183,6 +184,9 @@ private:  	U32 mHTTPTextureBits; +	//debug use +	U32 mTotalHTTPRequests ; +  	// Out-of-band cross-thread command queue.  This command queue  	// is logically tied to LLQueuedThread's list of  	// QueuedRequest instances and so must be covered by the diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index b9a15fd1f4..0115115a23 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -516,6 +516,7 @@ void LLGLTexMemBar::draw()  	S32 v_offset = (S32)((texture_bar_height + 2.2f) * mTextureView->mNumTextureBars + 2.0f);  	F32 total_texture_downloaded = (F32)gTotalTextureBytes / (1024 * 1024);  	F32 total_object_downloaded = (F32)gTotalObjectBytes / (1024 * 1024); +	U32 total_http_requests = LLAppViewer::getTextureFetch()->getTotalNumHTTPRequests() ;  	//----------------------------------------------------------------------------  	LLGLSUIDefault gls_ui;  	LLColor4 text_color(1.f, 1.f, 1.f, 0.75f); @@ -526,13 +527,13 @@ void LLGLTexMemBar::draw()  	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*6,  											 text_color, LLFontGL::LEFT, LLFontGL::TOP); -	text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB", +	text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB Tot Htp: %d",  					total_mem,  					max_total_mem,  					bound_mem,  					max_bound_mem,  					LLImageRaw::sGlobalRawMemory >> 20,	discard_bias, -					cache_usage, cache_max_usage, total_texture_downloaded, total_object_downloaded); +					cache_usage, cache_max_usage, total_texture_downloaded, total_object_downloaded, total_http_requests);  	//, cache_entries, cache_max_entries  	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*3, diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 3f7dc24ade..fa91f129b8 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -563,7 +563,17 @@ void LLIMToastNotifyPanel::reshape(S32 width, S32 height, BOOL called_from_paren  	height = rc.getHeight();  	width = rc.getWidth(); +	bool is_width_changed = width != getRect().getWidth(); +  	LLToastPanel::reshape(width, height, called_from_parent); + +	// Notification height required to display the text message depends on +	// the width of the text box thus if panel width is changed the text box +	// width is also changed then reshape() is called to adjust proper height. +	if (is_width_changed) +	{ +		reshape(width, height, called_from_parent); +	}  }  // EOF diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index c777e15523..767e1cd12b 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -2,33 +2,27 @@  * @file lltranslate.cpp  * @brief Functions for translating text via Google Translate.  * -* $LicenseInfo:firstyear=2009&license=viewergpl$ -* -* Copyright (c) 2009-2010, Linden Research, Inc. -* -* Second Life Viewer Source Code -* The source code in this file ("Source Code") is provided by Linden Lab -* to you under the terms of the GNU General Public License, version 2.0 -* ("GPL"), unless you have obtained a separate licensing agreement -* ("Other License"), formally executed by you and Linden Lab. Terms of -* the GPL can be found in doc/GPL-license.txt in this distribution, or -* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 -* -* There are special exceptions to the terms and conditions of the GPL as -* it is applied to this Source Code. View the full text of the exception -* in the file doc/FLOSS-exception.txt in this software distribution, or -* online at -* http://secondlifegrid.net/programs/open_source/licensing/flossexception -* -* By copying, modifying or distributing this software, you acknowledge -* that you have read and understood your obligations described above, -* and agree to abide by those obligations. -* -* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO -* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -* COMPLETENESS OR PERFORMANCE. -* $/LicenseInfo$ -*/ + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index 0786dc0ca3..e85a42e878 100644 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h @@ -2,33 +2,27 @@  * @file lltranslate.h  * @brief Human language translation class and JSON response receiver.  * -* $LicenseInfo:firstyear=2009&license=viewergpl$ -* -* Copyright (c) 2009-2010, Linden Research, Inc. -* -* Second Life Viewer Source Code -* The source code in this file ("Source Code") is provided by Linden Lab -* to you under the terms of the GNU General Public License, version 2.0 -* ("GPL"), unless you have obtained a separate licensing agreement -* ("Other License"), formally executed by you and Linden Lab. Terms of -* the GPL can be found in doc/GPL-license.txt in this distribution, or -* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 -* -* There are special exceptions to the terms and conditions of the GPL as -* it is applied to this Source Code. View the full text of the exception -* in the file doc/FLOSS-exception.txt in this software distribution, or -* online at -* http://secondlifegrid.net/programs/open_source/licensing/flossexception -* -* By copying, modifying or distributing this software, you acknowledge -* that you have read and understood your obligations described above, -* and agree to abide by those obligations. -* -* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO -* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -* COMPLETENESS OR PERFORMANCE. -* $/LicenseInfo$ -*/ + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  #ifndef LL_LLTRANSLATE_H  #define LL_LLTRANSLATE_H diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 5ad7725b3e..7024b2c785 100644 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp @@ -2,31 +2,25 @@   * @file llviewerassetstats.cpp   * @brief    * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h index 905ceefad5..73ec5974b2 100644 --- a/indra/newview/llviewerassetstats.h +++ b/indra/newview/llviewerassetstats.h @@ -2,31 +2,25 @@   * @file llviewerassetstats.h   * @brief Client-side collection of asset request statistics   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index ddb11829df..41b7c13826 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -647,8 +647,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  		LLGLState::checkTextureChannels();  		LLGLState::checkClientArrays(); -		BOOL to_texture = !for_snapshot && -						gPipeline.canUseVertexShaders() && +		BOOL to_texture = gPipeline.canUseVertexShaders() &&  						LLPipeline::sRenderGlow;  		LLAppViewer::instance()->pingMainloopTimeout("Display:Swap"); @@ -709,7 +708,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  			glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);  		} -		if (!for_snapshot) +		//if (!for_snapshot)  		{  			LLMemType mt_gw(LLMemType::MTYPE_DISPLAY_GEN_REFLECTION);  			LLAppViewer::instance()->pingMainloopTimeout("Display:Imagery"); @@ -1043,8 +1042,7 @@ LLRect get_whole_screen_region()  		S32 tile_height = llround((F32)gViewerWindow->getWorldViewHeightScaled() / zoom_factor);  		int tile_y = sub_region / num_horizontal_tiles;  		int tile_x = sub_region - (tile_y * num_horizontal_tiles); -		glh::matrix4f mat; -		 +			  		whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWorldViewHeightScaled() - (tile_y * tile_height), tile_width, tile_height);  	}  	return whole_screen; @@ -1124,10 +1122,14 @@ void render_ui(F32 zoom_factor, int subfield)  	LLMemType mt_ru(LLMemType::MTYPE_DISPLAY_RENDER_UI);  	LLGLState::checkStates(); -	glPushMatrix(); -	glLoadMatrixd(gGLLastModelView);  	glh::matrix4f saved_view = glh_get_current_modelview(); -	glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); + +	if (!gSnapshot) +	{ +		glPushMatrix(); +		glLoadMatrixd(gGLLastModelView); +		glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); +	}  	{  		BOOL to_texture = gPipeline.canUseVertexShaders() && @@ -1178,8 +1180,11 @@ void render_ui(F32 zoom_factor, int subfield)  		LLVertexBuffer::unbind();  	} -	glh_set_current_modelview(saved_view); -	glPopMatrix(); +	if (!gSnapshot) +	{ +		glh_set_current_modelview(saved_view); +		glPopMatrix(); +	}  	if (gDisplaySwapBuffers)  	{ @@ -1321,7 +1326,7 @@ void render_ui_2d()  	// render outline for HUD  	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)  	{ -		glPushMatrix(); +		gGL.pushMatrix();  		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);  		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);  		glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f); @@ -1330,7 +1335,7 @@ void render_ui_2d()  		glScalef(zoom,zoom,1.f);  		gGL.color4fv(LLColor4::white.mV);  		gl_rect_2d(-half_width, half_height, half_width, -half_height, FALSE); -		glPopMatrix(); +		gGL.popMatrix();  		stop_glerror();  	} @@ -1378,8 +1383,7 @@ void render_ui_2d()  			gGL.setColorMask(true, false);  			LLUI::sDirtyRect = t_rect; -			 -	} +		}  		LLGLDisable cull(GL_CULL_FACE);  		LLGLDisable blend(GL_BLEND); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index ed18d67b62..900081b8c6 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -53,7 +53,7 @@  #include "llwebsharing.h"	// For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!  #include "llfilepicker.h"  #include "llnotifications.h" - +#include "lldir.h"  #include "llevent.h"		// LLSimpleListener  #include "llnotificationsutil.h"  #include "lluuid.h" @@ -1766,7 +1766,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_  			media_source->setTarget(target); -			if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) +			const std::string plugin_dir = gDirUtilp->getLLPluginDir(); +			if (media_source->init(launcher_name, plugin_dir, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))  			{  				return media_source;  			} @@ -1832,16 +1833,17 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)  			media_source->ignore_ssl_cert_errors(true);  		} -		// start by assuming the default CA file will be used -		std::string ca_path = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "lindenlab.pem" ); -	 -		// default turned off so pick up the user specified path -		if( ! gSavedSettings.getBOOL("BrowserUseDefaultCAFile")) -		{ -			ca_path = gSavedSettings.getString("BrowserCAFilePath"); -		} -		// set the path to the CA.pem file -		media_source->addCertificateFilePath( ca_path ); +		// NOTE: Removed as per STORM-927 - SSL handshake failed - setting local self-signed certs like this  +		//       seems to screw things up big time. For now, devs will need to add these certs locally and Qt will pick them up. +//		// start by assuming the default CA file will be used +//		std::string ca_path = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "lindenlab.pem" ); +//		// default turned off so pick up the user specified path +//		if( ! gSavedSettings.getBOOL("BrowserUseDefaultCAFile")) +//		{ +//			ca_path = gSavedSettings.getString("BrowserCAFilePath"); +//		} +//		// set the path to the CA.pem file +//		media_source->addCertificateFilePath( ca_path );  		media_source->proxy_setup(gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort")); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 6fc85a3944..103989ee80 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2721,6 +2721,14 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				LLSD args;  				args["slurl"] = location;  				args["type"] = LLNotificationsUI::NT_NEARBYCHAT; + +				// Look for IRC-style emotes here so object name formatting is correct +				std::string prefix = message.substr(0, 4); +				if (prefix == "/me " || prefix == "/me'") +				{ +					chat.mChatStyle = CHAT_STYLE_IRC; +				} +  				LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);  			} diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 090d3cadd4..32cd8dbb39 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -477,7 +477,6 @@ void LLViewerObject::initVOClasses()  	llinfos << "Viewer Object size: " << sizeof(LLViewerObject) << llendl;  	LLVOGrass::initClass();  	LLVOWater::initClass(); -	LLVOSky::initClass();  	LLVOVolume::initClass();  } @@ -3009,6 +3008,8 @@ void LLViewerObject::setScale(const LLVector3 &scale, BOOL damped)  		{  			if (!mOnMap)  			{ +				llassert_always(LLWorld::getInstance()->getRegionFromHandle(getRegion()->getHandle())); +  				gObjectList.addToMap(this);  				mOnMap = TRUE;  			} @@ -3536,8 +3537,8 @@ void LLViewerObject::setPositionParent(const LLVector3 &pos_parent, BOOL damped)  	// Set position relative to parent, if no parent, relative to region  	if (!isRoot())  	{ -		LLViewerObject::setPosition(pos_parent); -		updateDrawable(damped); +		LLViewerObject::setPosition(pos_parent, damped); +		//updateDrawable(damped);  	}  	else  	{ @@ -3578,6 +3579,7 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)  		LLVector3 position_offset = getPosition() * getParent()->getRotation();  		((LLViewerObject *)getParent())->setPositionEdit(pos_edit - position_offset); +		updateDrawable(damped);  	}  	else if (isJointChild())  	{ @@ -3586,15 +3588,14 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)  		LLQuaternion inv_parent_rot = parent->getRotation();  		inv_parent_rot.transQuat();  		LLVector3 pos_parent = (pos_edit - parent->getPositionRegion()) * inv_parent_rot; -		LLViewerObject::setPosition(pos_parent); +		LLViewerObject::setPosition(pos_parent, damped);  	}  	else  	{ -		LLViewerObject::setPosition(pos_edit); +		LLViewerObject::setPosition(pos_edit, damped);  		mPositionRegion = pos_edit;  		mPositionAgent = mRegionp->getPosAgentFromRegion(mPositionRegion); -	} -	updateDrawable(damped); +	}	  } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 5849ab4307..82bc164021 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -160,19 +160,13 @@ U64 LLViewerObjectList::getIndex(const U32 local_id,  	return (((U64)index) << 32) | (U64)local_id;  } -BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object) +BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject* objectp)  { -	if(object.getRegion()) +	if(objectp && objectp->getRegion())  	{ -		U32 local_id = object.mLocalID; -		LLHost region_host = object.getRegion()->getHost(); -		if(!region_host.isOk()) -		{ -			return FALSE ; -		} - -		U32 ip = region_host.getAddress(); -		U32 port = region_host.getPort(); +		U32 local_id = objectp->mLocalID;		 +		U32 ip = objectp->getRegion()->getHost().getAddress(); +		U32 port = objectp->getRegion()->getHost().getPort();  		U64 ipport = (((U64)ip) << 32) | (U64)port;  		U32 index = sIPAndPortToIndex[ipport]; @@ -187,7 +181,7 @@ BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object)  		}  		// Found existing entry -		if (iter->second == object.getID()) +		if (iter->second == objectp->getID())  		{   // Full UUIDs match, so remove the entry  			sIndexAndLocalIDToUUID.erase(iter);  			return TRUE; @@ -477,7 +471,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,  			//			<< ", regionp " << (U32) regionp << ", object region " << (U32) objectp->getRegion()  			//			<< llendl;  			//} -			removeFromLocalIDTable(*objectp); +			removeFromLocalIDTable(objectp);  			setUUIDAndLocal(fullid,  							local_id,  							gMessageSystem->getSenderIP(), @@ -910,7 +904,7 @@ void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)  	//				<< objectp->getRegion()->getHost().getPort() << llendl;  	//}	 -	removeFromLocalIDTable(*objectp); +	removeFromLocalIDTable(objectp);  	if (objectp->onActiveList())  	{ @@ -1130,6 +1124,22 @@ void LLViewerObjectList::shiftObjects(const LLVector3 &offset)  	LLWorld::getInstance()->shiftRegions(offset);  } +//debug code +bool LLViewerObjectList::hasMapObjectInRegion(LLViewerRegion* regionp)  +{ +	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter) +	{ +		LLViewerObject* objectp = *iter; + +		if(objectp->isDead() || objectp->getRegion() == regionp) +		{ +			return true ; +		} +	} + +	return false ; +} +  void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)  {  	LLColor4 above_water_color = LLUIColorTable::instance().getColor( "NetMapOtherOwnAboveWater" ); @@ -1148,6 +1158,9 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)  	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter)  	{  		LLViewerObject* objectp = *iter; + +		llassert_always(!objectp->isDead()); +  		if (!objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment())  		{  			continue; @@ -1435,7 +1448,7 @@ LLViewerObject *LLViewerObjectList::replaceObject(const LLUUID &id, const LLPCod  	LLViewerObject *old_instance = findObject(id);  	if (old_instance)  	{ -		cleanupReferences(old_instance); +		//cleanupReferences(old_instance);  		old_instance->markDead();  		return createObject(pcode, regionp, id, old_instance->getLocalID(), LLHost()); diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 605bac8e89..8cff8e988a 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -87,6 +87,7 @@ public:  	void shiftObjects(const LLVector3 &offset); +	bool hasMapObjectInRegion(LLViewerRegion* regionp) ;  	void renderObjectsForMap(LLNetMap &netmap);  	void renderObjectBounds(const LLVector3 ¢er); @@ -160,7 +161,7 @@ public:  								const U32 ip,  								const U32 port); // Requires knowledge of message system info! -	static BOOL removeFromLocalIDTable(const LLViewerObject &object); +	static BOOL removeFromLocalIDTable(const LLViewerObject* objectp);  	// Used ONLY by the orphaned object code.  	static U64 getIndex(const U32 local_id, const U32 ip, const U32 port); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index c7649001c5..23b7b921b8 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -322,6 +322,12 @@ LLViewerRegion::~LLViewerRegion()  	std::for_each(mObjectPartition.begin(), mObjectPartition.end(), DeletePointer());  } +/*virtual*/  +const LLHost&	LLViewerRegion::getHost() const				 +{  +	return mHost;  +} +  void LLViewerRegion::loadObjectCache()  {  	if (mCacheLoaded) diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 7c6559203e..dd40b876cd 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -245,7 +245,7 @@ public:      LLEventPump& getCapAPI() { return mCapabilityListener.getCapAPI(); }      /// implements LLCapabilityProvider -	virtual LLHost	getHost() const				{ return mHost; } +	/*virtual*/ const LLHost& getHost() const;  	const U64 		&getHandle() const 			{ return mHandle; }  	LLSurface		&getLand() const			{ return *mLandp; } diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 0c05a301e6..cd16b15e3e 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1214,12 +1214,15 @@ void LLViewerFetchedTexture::cleanup()  void LLViewerFetchedTexture::setForSculpt()  { +	static const S32 MAX_INTERVAL = 8 ; //frames +  	mForSculpt = TRUE ;  	if(isForSculptOnly() && !getBoundRecently())  	{  		destroyGLTexture() ; //sculpt image does not need gl texture.  	}  	checkCachedRawSculptImage() ; +	setMaxVirtualSizeResetInterval(MAX_INTERVAL) ;  }  BOOL LLViewerFetchedTexture::isForSculptOnly() const diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c812fcf2da..274dbe2cc8 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -296,13 +296,15 @@ private:  	line_list_t mLineList;  	LLColor4 mTextColor; -public: -	LLDebugText(LLViewerWindow* window) : mWindow(window) {} -	  	void addText(S32 x, S32 y, const std::string &text)   	{  		mLineList.push_back(Line(text, x, y));  	} +	 +	void clearText() { mLineList.clear(); } +	 +public: +	LLDebugText(LLViewerWindow* window) : mWindow(window) {}  	void update()  	{ @@ -323,6 +325,8 @@ public:  		U32 ypos = 64;  		const U32 y_inc = 20; +		clearText(); +		  		if (gSavedSettings.getBOOL("DebugShowTime"))  		{  			const U32 y_inc2 = 15; @@ -347,6 +351,14 @@ public:  			addText(xpos, ypos, llformat("Time: %d:%02d:%02d", hours,mins,secs)); ypos += y_inc;  		} +#if LL_WINDOWS +		if (gSavedSettings.getBOOL("DebugShowMemory")) +		{ +			addText(xpos, ypos, llformat("Memory: %d (KB)", LLMemory::getWorkingSetSize() / 1024));  +			ypos += y_inc; +		} +#endif +  		if (gDisplayCameraPos)  		{  			std::string camera_view_text; @@ -601,6 +613,50 @@ public:  				ypos += y_inc;  			}  		} +		 +		if (gSavedSettings.getBOOL("DebugShowTextureInfo")) +		{ +			LLViewerObject* objectp = NULL ; +			//objectp = = gAgentCamera.getFocusObject(); +			 +			LLSelectNode* nodep = LLSelectMgr::instance().getHoverNode(); +			if (nodep) +			{ +				objectp = nodep->getObject();			 +			} +			if (objectp && !objectp->isDead()) +			{ +				S32 num_faces = objectp->mDrawable->getNumFaces() ; +				 +				for(S32 i = 0 ; i < num_faces; i++) +				{ +					LLFace* facep = objectp->mDrawable->getFace(i) ; +					if(facep) +					{ +						//addText(xpos, ypos, llformat("ts_min: %.3f ts_max: %.3f tt_min: %.3f tt_max: %.3f", facep->mTexExtents[0].mV[0], facep->mTexExtents[1].mV[0], +						//		facep->mTexExtents[0].mV[1], facep->mTexExtents[1].mV[1])); +						//ypos += y_inc; +						 +						addText(xpos, ypos, llformat("v_size: %.3f:  p_size: %.3f", facep->getVirtualSize(), facep->getPixelArea())); +						ypos += y_inc; +						 +						//const LLTextureEntry *tep = facep->getTextureEntry(); +						//if(tep) +						//{ +						//	addText(xpos, ypos, llformat("scale_s: %.3f:  scale_t: %.3f", tep->mScaleS, tep->mScaleT)) ; +						//	ypos += y_inc; +						//} +						 +						LLViewerTexture* tex = facep->getTexture() ; +						if(tex) +						{ +							addText(xpos, ypos, llformat("ID: %s v_size: %.3f", tex->getID().asString().c_str(), tex->getMaxVirtualSize())); +							ypos += y_inc; +						} +					} +				} +			} +		}  	}  	void draw() @@ -3945,18 +4001,26 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		LLPipeline::sShowHUDAttachments = FALSE;  	} +	// if not showing ui, use full window to render world view +	updateWorldViewRect(!show_ui); +  	// Copy screen to a buffer  	// crop sides or top and bottom, if taking a snapshot of different aspect ratio  	// from window -	S32 snapshot_width = mWindowRectRaw.getWidth(); -	S32 snapshot_height =  mWindowRectRaw.getHeight(); +	LLRect window_rect = show_ui ? getWindowRectRaw() : getWorldViewRectRaw();  + +	S32 snapshot_width = window_rect.getWidth(); +	S32 snapshot_height = window_rect.getHeight();  	// SNAPSHOT -	S32 window_width = mWindowRectRaw.getWidth(); -	S32 window_height = mWindowRectRaw.getHeight();	 -	LLRect window_rect = mWindowRectRaw; -	BOOL use_fbo = FALSE; +	S32 window_width = snapshot_width; +	S32 window_height = snapshot_height; +	 +	if (show_ui) +	{ +		image_width = llmin(image_width, window_width); +		image_height = llmin(image_height, window_height); +	} -	LLRenderTarget target;  	F32 scale_factor = 1.0f ;  	if(!keep_window_aspect) //image cropping  	{		 @@ -3969,45 +4033,24 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	{  		if(image_width > window_width || image_height > window_height) //need to enlarge the scene  		{ -			if (!LLPipeline::sRenderDeferred && gGLManager.mHasFramebufferObject && !show_ui) -			{ -				GLint max_size = 0; -				glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE_EXT, &max_size); -		 -				if (image_width <= max_size && image_height <= max_size) //re-project the scene -				{ -					use_fbo = TRUE; -					 -					snapshot_width = image_width; -					snapshot_height = image_height; -					target.allocate(snapshot_width, snapshot_height, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, TRUE); -					window_width = snapshot_width; -					window_height = snapshot_height; -					scale_factor = 1.f; -					mWindowRectRaw.set(0, snapshot_height, snapshot_width, 0); -					target.bindTarget();			 -				} -			} - -			if(!use_fbo) //no re-projection, so tiling the scene -			{ -				F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ; -				snapshot_width = (S32)(ratio * image_width) ; -				snapshot_height = (S32)(ratio * image_height) ; -				scale_factor = llmax(1.0f, 1.0f / ratio) ;	 -			} +			F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ; +			snapshot_width = (S32)(ratio * image_width) ; +			snapshot_height = (S32)(ratio * image_height) ; +			scale_factor = llmax(1.0f, 1.0f / ratio) ;	  		} -		//else: keep the current scene scale, re-scale it if necessary after reading out.  	} -	// if not showing ui, use full window to render world view -	updateWorldViewRect(!show_ui); +	if (show_ui && scale_factor > 1.f) +	{ +		llwarns << "over scaling UI not supported." << llendl; +	}  	S32 buffer_x_offset = llfloor(((window_width - snapshot_width) * scale_factor) / 2.f);  	S32 buffer_y_offset = llfloor(((window_height - snapshot_height) * scale_factor) / 2.f);  	S32 image_buffer_x = llfloor(snapshot_width*scale_factor) ;  	S32 image_buffer_y = llfloor(snapshot_height *scale_factor) ; +  	if(image_buffer_x > max_size || image_buffer_y > max_size) //boundary check to avoid memory overflow  	{  		scale_factor *= llmin((F32)max_size / image_buffer_x, (F32)max_size / image_buffer_y) ; @@ -4016,7 +4059,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	}  	if(image_buffer_x > 0 && image_buffer_y > 0)  	{ -	raw->resize(image_buffer_x, image_buffer_y, 3); +		raw->resize(image_buffer_x, image_buffer_y, 3);  	}  	else  	{ @@ -4028,12 +4071,13 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	}  	BOOL high_res = scale_factor >= 2.f; // Font scaling is slow, only do so if rez is much higher -	if (high_res) +	if (high_res && show_ui)  	{ -		send_agent_pause(); +		llwarns << "High res UI snapshot not supported. " << llendl; +		/*send_agent_pause();  		//rescale fonts  		initFonts(scale_factor); -		LLHUDObject::reshapeAll(); +		LLHUDObject::reshapeAll();*/  	}  	S32 output_buffer_offset_y = 0; @@ -4129,12 +4173,6 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		output_buffer_offset_y += subimage_y_offset;  	} -	if (use_fbo) -	{ -		mWindowRectRaw = window_rect; -		target.flush(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); -	}  	gDisplaySwapBuffers = FALSE;  	gDepthDirty = TRUE; @@ -4149,11 +4187,11 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		LLPipeline::sShowHUDAttachments = TRUE;  	} -	if (high_res) +	/*if (high_res)  	{  		initFonts(1.f);  		LLHUDObject::reshapeAll(); -	} +	}*/  	// Pre-pad image to number of pixels such that the line length is a multiple of 4 bytes (for BMP encoding)  	// Note: this formula depends on the number of components being 3.  Not obvious, but it's correct.	 diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index fd89044995..2e376e8568 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -599,16 +599,16 @@ F32 LLVOAvatar::sRenderDistance = 256.f;  S32	LLVOAvatar::sNumVisibleAvatars = 0;  S32	LLVOAvatar::sNumLODChangesThisFrame = 0; -const LLUUID LLVOAvatar::sStepSoundOnLand = LLUUID("e8af4a28-aa83-4310-a7c4-c047e15ea0df"); +const LLUUID LLVOAvatar::sStepSoundOnLand("e8af4a28-aa83-4310-a7c4-c047e15ea0df");  const LLUUID LLVOAvatar::sStepSounds[LL_MCODE_END] =  { -	LLUUID(SND_STONE_RUBBER), -	LLUUID(SND_METAL_RUBBER), -	LLUUID(SND_GLASS_RUBBER), -	LLUUID(SND_WOOD_RUBBER), -	LLUUID(SND_FLESH_RUBBER), -	LLUUID(SND_RUBBER_PLASTIC), -	LLUUID(SND_RUBBER_RUBBER) +	SND_STONE_RUBBER, +	SND_METAL_RUBBER, +	SND_GLASS_RUBBER, +	SND_WOOD_RUBBER, +	SND_FLESH_RUBBER, +	SND_RUBBER_PLASTIC, +	SND_RUBBER_RUBBER  };  S32 LLVOAvatar::sRenderName = RENDER_NAME_ALWAYS; diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index c26008d640..a933500706 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -225,8 +225,9 @@ BOOL LLVOCacheEntry::writeToFile(LLAPRFile* apr_file) const  // Format string used to construct filename for the object cache  static const char OBJECT_CACHE_FILENAME[] = "objects_%d_%d.slc"; -// Throw out 1/20 (5%) of our cache entries if we run out of room. -const U32 ENTRIES_PURGE_FACTOR = 20; +const U32 MAX_NUM_OBJECT_ENTRIES = 128 ; +const U32 MIN_ENTRIES_TO_PURGE = 16 ; +const U32 INVALID_TIME = 0 ;  const char* object_cache_dirname = "objectcache";  const char* header_filename = "object.cache"; @@ -261,6 +262,7 @@ void LLVOCache::destroyClass()  LLVOCache::LLVOCache():  	mInitialized(FALSE),  	mReadOnly(TRUE), +	mNumEntries(0),  	mCacheSize(1)  {  	mEnabled = gSavedSettings.getBOOL("ObjectCacheEnabled"); @@ -298,17 +300,16 @@ void LLVOCache::initCache(ELLPath location, U32 size, U32 cache_version)  		llwarns << "Cache already initialized." << llendl;  		return ;  	} +	mInitialized = TRUE ;  	setDirNames(location);  	if (!mReadOnly)  	{  		LLFile::mkdir(mObjectCacheDirName);  	} - -	mCacheSize = size; - -	readCacheHeader(); -	mInitialized = TRUE ; +	mCacheSize = llclamp(size, MIN_ENTRIES_TO_PURGE, MAX_NUM_OBJECT_ENTRIES); +	mMetaInfo.mVersion = cache_version; +	readCacheHeader();	  	if(mMetaInfo.mVersion != cache_version)   	{ @@ -332,6 +333,8 @@ void LLVOCache::removeCache(ELLPath location)  		return ;  	} +	llinfos << "about to remove the object cache due to settings." << llendl ; +  	std::string delem = gDirUtilp->getDirDelimiter();  	std::string mask = delem + "*";  	std::string cache_dir = gDirUtilp->getExpandedFilename(location, object_cache_dirname); @@ -352,6 +355,8 @@ void LLVOCache::removeCache()  		return ;  	} +	llinfos << "about to remove the object cache due to some error." << llendl ; +  	std::string delem = gDirUtilp->getDirDelimiter();  	std::string mask = delem + "*";  	llinfos << "Removing cache at " << mObjectCacheDirName << llendl; @@ -361,62 +366,80 @@ void LLVOCache::removeCache()  	writeCacheHeader();  } -void LLVOCache::clearCacheInMemory() -{ -	std::for_each(mHandleEntryMap.begin(), mHandleEntryMap.end(), DeletePairedPointer()); -	mHandleEntryMap.clear(); -} - -void LLVOCache::getObjectCacheFilename(U64 handle, std::string& filename)  +void LLVOCache::removeEntry(HeaderEntryInfo* entry)   { -	U32 region_x, region_y; +	llassert_always(mInitialized) ; +	if(mReadOnly) +	{ +		return ; +	} +	if(!entry) +	{ +		return ; +	} -	grid_from_region_handle(handle, ®ion_x, ®ion_y); -	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, object_cache_dirname, -			   llformat(OBJECT_CACHE_FILENAME, region_x, region_y)); +	header_entry_queue_t::iterator iter = mHeaderEntryQueue.find(entry) ; +	if(iter != mHeaderEntryQueue.end()) +	{		 +		mHandleEntryMap.erase(entry->mHandle) ;		 +		mHeaderEntryQueue.erase(iter) ; +		removeFromCache(entry) ; +		delete entry ; -	return ; +		mNumEntries = mHandleEntryMap.size() ; +	}  } -void LLVOCache::removeFromCache(U64 handle) +void LLVOCache::removeEntry(U64 handle)   { -	if(mReadOnly) +	handle_entry_map_t::iterator iter = mHandleEntryMap.find(handle) ; +	if(iter == mHandleEntryMap.end()) //no cache  	{ -		llwarns << "Not removing cache for handle " << handle << ": Cache is currently in read-only mode." << llendl;  		return ;  	} - -	std::string filename; -	getObjectCacheFilename(handle, filename); -	LLAPRFile::remove(filename, mLocalAPRFilePoolp);	 +	HeaderEntryInfo* entry = iter->second ; +	removeEntry(entry) ;  } -BOOL LLVOCache::checkRead(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error) +void LLVOCache::clearCacheInMemory()  { -	if(!check_read(apr_file, src, n_bytes)) +	if(!mHeaderEntryQueue.empty())   	{ -		if (remove_cache_on_error) +		for(header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin(); iter != mHeaderEntryQueue.end(); ++iter)  		{ -			removeCache() ; +			delete *iter ;  		} -		return FALSE ; +		mHeaderEntryQueue.clear(); +		mHandleEntryMap.clear(); +		mNumEntries = 0 ;  	} -	return TRUE ;  } -BOOL LLVOCache::checkWrite(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error)  +void LLVOCache::getObjectCacheFilename(U64 handle, std::string& filename)  +{ +	U32 region_x, region_y; + +	grid_from_region_handle(handle, ®ion_x, ®ion_y); +	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, object_cache_dirname, +			   llformat(OBJECT_CACHE_FILENAME, region_x, region_y)); + +	return ; +} + +void LLVOCache::removeFromCache(HeaderEntryInfo* entry)  { -	if(!check_write(apr_file, src, n_bytes)) +	if(mReadOnly)  	{ -		if (remove_cache_on_error) -		{ -			removeCache() ; -		} -		return FALSE ; +		llwarns << "Not removing cache for handle " << entry->mHandle << ": Cache is currently in read-only mode." << llendl; +		return ;  	} -	return TRUE ; +	std::string filename; +	getObjectCacheFilename(entry->mHandle, filename); +	LLAPRFile::remove(filename, mLocalAPRFilePoolp); +	entry->mTime = INVALID_TIME ; +	updateEntry(entry) ; //update the head file.  }  void LLVOCache::readCacheHeader() @@ -430,45 +453,76 @@ void LLVOCache::readCacheHeader()  	//clear stale info.  	clearCacheInMemory();	 +	bool success = true ;  	if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))  	{ -		LLAPRFile* apr_file = new LLAPRFile(mHeaderFileName, APR_FOPEN_READ|APR_FOPEN_BINARY, mLocalAPRFilePoolp);		 +		LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);		  		//read the meta element -		bool remove_cache_on_error = false; -		if(!checkRead(apr_file, &mMetaInfo, sizeof(HeaderMetaInfo), remove_cache_on_error)) -		{ -			llwarns << "Error reading meta information from cache header." << llendl; -			delete apr_file; -			return; -		} - -		HeaderEntryInfo* entry ; -		for(U32 entry_index = 0; entry_index < mCacheSize; ++entry_index) +		success = check_read(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ; +		 +		if(success)  		{ -			entry = new HeaderEntryInfo() ; -			if(!checkRead(apr_file, entry, sizeof(HeaderEntryInfo), remove_cache_on_error)) +			HeaderEntryInfo* entry = NULL ; +			mNumEntries = 0 ; +			U32 num_read = 0 ; +			while(num_read++ < MAX_NUM_OBJECT_ENTRIES)  			{ -				llwarns << "Error reading cache header entry. (entry_index=" << entry_index << ")" << llendl; -				delete entry ;			 -				break; +				if(!entry) +				{ +					entry = new HeaderEntryInfo() ; +				} +				success = check_read(&apr_file, entry, sizeof(HeaderEntryInfo)); +								 +				if(!success) //failed +				{ +					llwarns << "Error reading cache header entry. (entry_index=" << mNumEntries << ")" << llendl; +					delete entry ; +					entry = NULL ; +					break ; +				} +				else if(entry->mTime == INVALID_TIME) +				{ +					continue ; //an empty entry +				} + +				entry->mIndex = mNumEntries++ ; +				mHeaderEntryQueue.insert(entry) ; +				mHandleEntryMap[entry->mHandle] = entry ; +				entry = NULL ;  			} -			else if(!entry->mTime) //end of the cache. +			if(entry)  			{  				delete entry ; -				break;  			} - -			entry->mIndex = entry_index; -			mHandleEntryMap[entry->mHandle] = entry;  		} -		delete apr_file ; +		//--------- +		//debug code +		//---------- +		//std::string name ; +		//for(header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ; success && iter != mHeaderEntryQueue.end(); ++iter) +		//{ +		//	getObjectCacheFilename((*iter)->mHandle, name) ; +		//	llinfos << name << llendl ; +		//} +		//-----------  	}  	else  	{  		writeCacheHeader() ;  	} + +	if(!success) +	{ +		removeCache() ; //failed to read header, clear the cache +	} +	else if(mNumEntries >= mCacheSize) +	{ +		purgeEntries(mCacheSize) ; +	} + +	return ;  }  void LLVOCache::writeCacheHeader() @@ -485,60 +539,50 @@ void LLVOCache::writeCacheHeader()  		return;  	} -	LLAPRFile* apr_file = new LLAPRFile(mHeaderFileName, APR_FOPEN_CREATE|APR_FOPEN_WRITE|APR_FOPEN_BINARY|APR_FOPEN_TRUNCATE, mLocalAPRFilePoolp); - -	//write the meta element -	if(!checkWrite(apr_file, &mMetaInfo, sizeof(HeaderMetaInfo))) +	bool success = true ;  	{ -		llwarns << "Error writing meta information to cache header." << llendl; -		delete apr_file; -		return; -	} +		LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp); -	U32 entry_index = 0; -	handle_entry_map_t::iterator iter_end = mHandleEntryMap.end(); -	for(handle_entry_map_t::iterator iter = mHandleEntryMap.begin(); -		iter != iter_end; -		++iter) -	{ -		HeaderEntryInfo* entry = iter->second; -		entry->mIndex = entry_index++; -		if(!checkWrite(apr_file, (void*)entry, sizeof(HeaderEntryInfo))) +		//write the meta element +		success = check_write(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ; + + +		mNumEntries = 0 ;	 +		for(header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ; success && iter != mHeaderEntryQueue.end(); ++iter)  		{ -			llwarns << "Failed to write cache header for entry " << entry->mHandle << " (entry_index = " << entry_index << ")" << llendl; -			delete apr_file; -			return; +			(*iter)->mIndex = mNumEntries++ ; +			success = check_write(&apr_file, (void*)*iter, sizeof(HeaderEntryInfo));  		} -	} - -	// Why do we need to fill the cache header with default entries?  DK 2010-12-14 -	// It looks like we currently rely on the file being pre-allocated so we can seek during updateEntry(). -	if(entry_index < mCacheSize) -	{ -		HeaderEntryInfo* entry = new HeaderEntryInfo() ; -		for(; entry_index < mCacheSize; ++entry_index) +	 +		mNumEntries = mHeaderEntryQueue.size() ; +		if(success && mNumEntries < MAX_NUM_OBJECT_ENTRIES)  		{ -			//fill the cache with the default entry. -			if(!checkWrite(apr_file, entry, sizeof(HeaderEntryInfo))) +			HeaderEntryInfo* entry = new HeaderEntryInfo() ; +			entry->mTime = INVALID_TIME ; +			for(S32 i = mNumEntries ; success && i < MAX_NUM_OBJECT_ENTRIES ; i++)  			{ -				llwarns << "Failed to fill cache header with default entries (entry_index = " << entry_index << ").  Switching to read-only mode." << llendl; -				mReadOnly = TRUE ; //disable the cache. -				break; +				//fill the cache with the default entry. +				success = check_write(&apr_file, entry, sizeof(HeaderEntryInfo)) ;			 +  			} +			delete entry ;  		} -		delete entry ;  	} -	delete apr_file ; + +	if(!success) +	{ +		clearCacheInMemory() ; +		mReadOnly = TRUE ; //disable the cache. +	} +	return ;  }  BOOL LLVOCache::updateEntry(const HeaderEntryInfo* entry)  { -	LLAPRFile* apr_file = new LLAPRFile(mHeaderFileName, APR_FOPEN_WRITE|APR_FOPEN_BINARY, mLocalAPRFilePoolp); -	apr_file->seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ; +	LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, mLocalAPRFilePoolp); +	apr_file.seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ; -	BOOL result = checkWrite(apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ; -	delete apr_file; -	return result; +	return check_write(&apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ;  }  void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::vocache_entry_map_t& cache_entry_map)  @@ -557,76 +601,66 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca  		return ;  	} -	std::string filename; -	getObjectCacheFilename(handle, filename); -	LLAPRFile* apr_file = new LLAPRFile(filename, APR_FOPEN_READ|APR_FOPEN_BINARY, mLocalAPRFilePoolp); - -	LLUUID cache_id ; -	if(!checkRead(apr_file, cache_id.mData, UUID_BYTES)) -	{ -		llwarns << "Error reading cache_id from " << filename << llendl; -		delete apr_file; -		return ; -	} -	if(cache_id != id) +	bool success = true ;  	{ -		llwarns << "Cache ID (" << cache_id << ") doesn't match id for this region (" << id << "), discarding.  handle = " << handle << llendl; -		delete apr_file ; -		return ; -	} +		std::string filename; +		getObjectCacheFilename(handle, filename); +		LLAPRFile apr_file(filename, APR_READ|APR_BINARY, mLocalAPRFilePoolp); +	 +		LLUUID cache_id ; +		success = check_read(&apr_file, cache_id.mData, UUID_BYTES) ; +	 +		if(success) +		{		 +			if(cache_id != id) +			{ +				llinfos << "Cache ID doesn't match for this region, discarding"<< llendl; +				success = false ; +			} -	S32 num_entries; -	if(!checkRead(apr_file, &num_entries, sizeof(S32))) -	{ -		llwarns << "Error reading num_entries from " << filename << llendl; -		delete apr_file; -		return ; +			if(success) +			{ +				S32 num_entries; +				success = check_read(&apr_file, &num_entries, sizeof(S32)) ; +	 +				for (S32 i = 0; success && i < num_entries; i++) +				{ +					LLVOCacheEntry* entry = new LLVOCacheEntry(&apr_file); +					if (!entry->getLocalID()) +					{ +						llwarns << "Aborting cache file load for " << filename << ", cache file corruption!" << llendl; +						delete entry ; +						success = false ; +					} +					cache_entry_map[entry->getLocalID()] = entry; +				} +			} +		}		  	} -	for (S32 i = 0; i < num_entries; i++) +	if(!success)  	{ -		LLVOCacheEntry* entry = new LLVOCacheEntry(apr_file); -		if (!entry->getLocalID()) +		if(cache_entry_map.empty())  		{ -			llwarns << "Aborting cache file load for " << filename << ", cache file corruption! (entry number = " << i << ")" << llendl; -			delete entry ; -			break; +			removeEntry(iter->second) ;  		} -		cache_entry_map[entry->getLocalID()] = entry;  	} -	delete apr_file ;  	return ;  } -void LLVOCache::purgeEntries() +void LLVOCache::purgeEntries(U32 size)  { -	U32 limit = mCacheSize - (mCacheSize / ENTRIES_PURGE_FACTOR); -	limit = llclamp(limit, (U32)1, mCacheSize); -	// Construct a vector of entries out of the map so we can sort by time. -	std::vector<HeaderEntryInfo*> header_vector; -	handle_entry_map_t::iterator iter_end = mHandleEntryMap.end(); -	for (handle_entry_map_t::iterator iter = mHandleEntryMap.begin(); -		iter != iter_end; -		++iter) -	{ -		header_vector.push_back(iter->second); -	} -	// Sort by time, oldest first. -	std::sort(header_vector.begin(), header_vector.end(), header_entry_less()); -	while(header_vector.size() > limit) -	{ -		HeaderEntryInfo* entry = header_vector.front(); -		 -		removeFromCache(entry->mHandle); +	while(mHeaderEntryQueue.size() > size) +	{ +		header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ; +		HeaderEntryInfo* entry = *iter ;			  		mHandleEntryMap.erase(entry->mHandle); -		header_vector.erase(header_vector.begin()); +		mHeaderEntryQueue.erase(iter) ; +		removeFromCache(entry) ;  		delete entry;  	} - -	writeCacheHeader() ; -	// *TODO: Verify that we can avoid re-reading the cache header.  DK 2010-12-14 -	readCacheHeader() ; +	mNumEntries = mHandleEntryMap.size() ;  }  void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry::vocache_entry_map_t& cache_entry_map, BOOL dirty_cache)  @@ -642,31 +676,34 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:  	{  		llwarns << "Not writing cache for handle " << handle << "): Cache is currently in read-only mode." << llendl;  		return ; -	} +	}	 -	U32 num_handle_entries = mHandleEntryMap.size(); -	  	HeaderEntryInfo* entry;  	handle_entry_map_t::iterator iter = mHandleEntryMap.find(handle) ;  	if(iter == mHandleEntryMap.end()) //new entry -	{ -		if(num_handle_entries >= mCacheSize) +	{				 +		if(mNumEntries >= mCacheSize - 1)  		{ -			purgeEntries() ; -			num_handle_entries = mHandleEntryMap.size(); +			purgeEntries(mCacheSize - 1) ;  		} -		 +  		entry = new HeaderEntryInfo();  		entry->mHandle = handle ;  		entry->mTime = time(NULL) ; -		entry->mIndex = num_handle_entries++; +		entry->mIndex = mNumEntries++; +		mHeaderEntryQueue.insert(entry) ;  		mHandleEntryMap[handle] = entry ;  	}  	else  	{  		// Update access time. -		entry = iter->second ; +		entry = iter->second ;		 + +		//resort +		mHeaderEntryQueue.erase(entry) ; +		  		entry->mTime = time(NULL) ; +		mHeaderEntryQueue.insert(entry) ;  	}  	//update cache header @@ -683,37 +720,33 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:  	}  	//write to cache file -	std::string filename; -	getObjectCacheFilename(handle, filename); -	LLAPRFile* apr_file = new LLAPRFile(filename, APR_FOPEN_CREATE|APR_FOPEN_WRITE|APR_FOPEN_BINARY|APR_FOPEN_TRUNCATE, mLocalAPRFilePoolp); -	 -	if(!checkWrite(apr_file, (void*)id.mData, UUID_BYTES)) +	bool success = true ;  	{ -		llwarns << "Error writing id to " << filename << llendl; -		delete apr_file; -		return ; -	} +		std::string filename; +		getObjectCacheFilename(handle, filename); +		LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp); +	 +		success = check_write(&apr_file, (void*)id.mData, UUID_BYTES) ; -	S32 num_entries = cache_entry_map.size() ; -	if(!checkWrite(apr_file, &num_entries, sizeof(S32))) -	{ -		llwarns << "Error writing num_entries to " << filename << llendl; -		delete apr_file; -		return ; +	 +		if(success) +		{ +			S32 num_entries = cache_entry_map.size() ; +			success = check_write(&apr_file, &num_entries, sizeof(S32)); +	 +			for (LLVOCacheEntry::vocache_entry_map_t::const_iterator iter = cache_entry_map.begin(); success && iter != cache_entry_map.end(); ++iter) +			{ +				success = iter->second->writeToFile(&apr_file) ; +			} +		}  	} -	for (LLVOCacheEntry::vocache_entry_map_t::const_iterator iter = cache_entry_map.begin(); iter != cache_entry_map.end(); ++iter) +	if(!success)  	{ -		if(!iter->second->writeToFile(apr_file)) -		{ -			llwarns << "Aborting cache file write for " << filename << ", error writing to file!" << llendl; -			//failed -			removeCache() ; -			break; -		} +		removeEntry(entry) ; +  	} -	delete apr_file ;  	return ;  } diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index e103007979..14e3b4c793 100644 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h @@ -95,13 +95,15 @@ private:  	{  		bool operator()(const HeaderEntryInfo* lhs, const HeaderEntryInfo* rhs) const  		{ -			if (lhs->mTime == rhs->mTime) +			if(lhs->mTime == rhs->mTime)   			{ -				return lhs->mHandle < rhs->mHandle; +				return lhs < rhs ;  			} -			return lhs->mTime < rhs->mTime; // older entry in front +			 +			return lhs->mTime < rhs->mTime ; // older entry in front of queue (set)  		}  	}; +	typedef std::set<HeaderEntryInfo*, header_entry_less> header_entry_queue_t;  	typedef std::map<U64, HeaderEntryInfo*> handle_entry_map_t;  private:  	LLVOCache() ; @@ -114,6 +116,7 @@ public:  	void readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::vocache_entry_map_t& cache_entry_map) ;  	void writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry::vocache_entry_map_t& cache_entry_map, BOOL dirty_cache) ; +	void removeEntry(U64 handle) ;  	void setReadOnly(BOOL read_only) {mReadOnly = read_only;}  @@ -121,15 +124,14 @@ private:  	void setDirNames(ELLPath location);	  	// determine the cache filename for the region from the region handle	  	void getObjectCacheFilename(U64 handle, std::string& filename); -	void removeFromCache(U64 handle); +	void removeFromCache(HeaderEntryInfo* entry);  	void readCacheHeader();  	void writeCacheHeader();  	void clearCacheInMemory();  	void removeCache() ; -	void purgeEntries(); +	void removeEntry(HeaderEntryInfo* entry) ; +	void purgeEntries(U32 size);  	BOOL updateEntry(const HeaderEntryInfo* entry); -	BOOL checkRead(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error = true) ; -	BOOL checkWrite(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error = true) ;  private:  	BOOL                 mEnabled; @@ -137,9 +139,11 @@ private:  	BOOL                 mReadOnly ;  	HeaderMetaInfo       mMetaInfo;  	U32                  mCacheSize; +	U32                  mNumEntries;  	std::string          mHeaderFileName ;  	std::string          mObjectCacheDirName;  	LLVolatileAPRPool*   mLocalAPRFilePoolp ; 	 +	header_entry_queue_t mHeaderEntryQueue;  	handle_entry_map_t   mHandleEntryMap;	  	static LLVOCache* sInstance ; diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 7ae8c2c07d..80f43e51d2 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -77,9 +77,6 @@ static const LLVector2 TEX11 = LLVector2(1.f, 1.f);  LLUUID gSunTextureID = IMG_SUN;  LLUUID gMoonTextureID = IMG_MOON; -//static  -LLColor3 LLHaze::sAirScaSeaLevel; -  class LLFastLn  {  public: @@ -182,6 +179,23 @@ inline void color_gamma_correct(LLColor3 &col)  	}  } +static LLColor3 calc_air_sca_sea_level() +{ +	static LLColor3 WAVE_LEN(675, 520, 445); +	static LLColor3 refr_ind = refr_ind_calc(WAVE_LEN); +	static LLColor3 n21 = refr_ind * refr_ind - LLColor3(1, 1, 1); +	static LLColor3 n4 = n21 * n21; +	static LLColor3 wl2 = WAVE_LEN * WAVE_LEN * 1e-6f; +	static LLColor3 wl4 = wl2 * wl2; +	static LLColor3 mult_const = fsigma * 2.0f/ 3.0f * 1e24f * (F_PI * F_PI) * n4; +	static F32 dens_div_N = F32( ATM_SEA_LEVEL_NDENS / Ndens2); +	return dens_div_N * color_div ( mult_const, wl4 ); +} + +// static constants. +LLColor3 const LLHaze::sAirScaSeaLevel = calc_air_sca_sea_level(); +F32 const LLHaze::sAirScaIntense = color_intens(LLHaze::sAirScaSeaLevel);	 +F32 const LLHaze::sAirScaAvg = LLHaze::sAirScaIntense / 3.f;  /*************************************** @@ -394,12 +408,6 @@ LLVOSky::~LLVOSky()  	mCubeMap = NULL;  } -void LLVOSky::initClass() -{ -	LLHaze::initClass(); -} - -  void LLVOSky::init()  {     	const F32 haze_int = color_intens(mHaze.calcSigSca(0)); @@ -2147,17 +2155,8 @@ void LLVOSky::updateFog(const F32 distance)  	stop_glerror();  } -// static -void LLHaze::initClass() -{ -	sAirScaSeaLevel = LLHaze::calcAirScaSeaLevel(); -} - -  // Functions used a lot. - -  F32 color_norm_pow(LLColor3& col, F32 e, BOOL postmultiply)  {  	F32 mv = color_max(col); diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index 6b3e7873a1..d3a42583ea 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -292,23 +292,6 @@ LL_FORCE_INLINE LLColor3 refr_ind_calc(const LLColor3 &wave_length)  } -LL_FORCE_INLINE LLColor3 calc_air_sca_sea_level() -{ -	const static LLColor3 WAVE_LEN(675, 520, 445); -	const static LLColor3 refr_ind = refr_ind_calc(WAVE_LEN); -	const static LLColor3 n21 = refr_ind * refr_ind - LLColor3(1, 1, 1); -	const static LLColor3 n4 = n21 * n21; -	const static LLColor3 wl2 = WAVE_LEN * WAVE_LEN * 1e-6f; -	const static LLColor3 wl4 = wl2 * wl2; -	const static LLColor3 mult_const = fsigma * 2.0f/ 3.0f * 1e24f * (F_PI * F_PI) * n4; -	const static F32 dens_div_N = F32( ATM_SEA_LEVEL_NDENS / Ndens2); -	return dens_div_N * color_div ( mult_const, wl4 ); -} - -const LLColor3 gAirScaSeaLevel = calc_air_sca_sea_level(); -const F32 AIR_SCA_INTENS = color_intens(gAirScaSeaLevel);	 -const F32 AIR_SCA_AVG = AIR_SCA_INTENS / 3.f; -  class LLHaze  {  public: @@ -316,18 +299,15 @@ public:  	LLHaze(const F32 g, const LLColor3& sca, const F32 fo = 2.f) :   			mG(g), mSigSca(0.25f/F_PI * sca), mFalloff(fo), mAbsCoef(0.f)  	{ -		mAbsCoef = color_intens(mSigSca) / AIR_SCA_INTENS; +		mAbsCoef = color_intens(mSigSca) / sAirScaIntense;  	}  	LLHaze(const F32 g, const F32 sca, const F32 fo = 2.f) : mG(g),  			mSigSca(0.25f/F_PI * LLColor3(sca, sca, sca)), mFalloff(fo)  	{ -		mAbsCoef = 0.01f * sca / AIR_SCA_AVG; +		mAbsCoef = 0.01f * sca / sAirScaAvg;  	} -	static void initClass(); - -  	F32 getG() const				{ return mG; }  	void setG(const F32 g) @@ -343,12 +323,12 @@ public:  	void setSigSca(const LLColor3& s)  	{  		mSigSca = s; -		mAbsCoef = 0.01f * color_intens(mSigSca) / AIR_SCA_INTENS; +		mAbsCoef = 0.01f * color_intens(mSigSca) / sAirScaIntense;  	}  	void setSigSca(const F32 s0, const F32 s1, const F32 s2)  	{ -		mSigSca = AIR_SCA_AVG * LLColor3 (s0, s1, s2); +		mSigSca = sAirScaAvg * LLColor3 (s0, s1, s2);  		mAbsCoef = 0.01f * (s0 + s1 + s2) / 3;  	} @@ -392,10 +372,11 @@ public:  	static inline LLColor3 calcAirSca(const F32 h);  	static inline void calcAirSca(const F32 h, LLColor3 &result); -	static LLColor3 calcAirScaSeaLevel()			{ return gAirScaSeaLevel; } -	static const LLColor3 &getAirScaSeaLevel()		{ return sAirScaSeaLevel; } -public: -	static LLColor3 sAirScaSeaLevel; + +private: +	static LLColor3 const sAirScaSeaLevel; +	static F32 const sAirScaIntense; +	static F32 const sAirScaAvg;  protected:  	F32			mG; @@ -473,7 +454,6 @@ public:  	LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);  	// Initialize/delete data that's only inited once per class. -	static void initClass();  	void init();  	void initCubeMap();  	void initEmpty(); @@ -654,14 +634,12 @@ F32 color_norm_pow(LLColor3& col, F32 e, BOOL postmultiply = FALSE);  inline LLColor3 LLHaze::calcAirSca(const F32 h)  { -	static const LLColor3 air_sca_sea_level = calcAirScaSeaLevel(); -	return calcFalloff(h) * air_sca_sea_level; +	return calcFalloff(h) * sAirScaSeaLevel;  }  inline void LLHaze::calcAirSca(const F32 h, LLColor3 &result)  { -	static const LLColor3 air_sca_sea_level = calcAirScaSeaLevel(); -	result = air_sca_sea_level; +	result = sAirScaSeaLevel;  	result *= calcFalloff(h);  } diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 761e12020b..a207d3e050 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -388,10 +388,12 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  				// There's something bogus in the data that we're unpacking.  				dp->dumpBufferToLog();  				llwarns << "Flushing cache files" << llendl; -				std::string mask; -				mask = gDirUtilp->getDirDelimiter() + "*.slc"; -				gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""), mask); -// 				llerrs << "Bogus TE data in " << getID() << ", crashing!" << llendl; + +				if(LLVOCache::hasInstance() && getRegion()) +				{ +					LLVOCache::getInstance()->removeEntry(getRegion()->getHandle()) ; +				} +				  				llwarns << "Bogus TE data in " << getID() << llendl;  			}  			else  @@ -667,11 +669,32 @@ void LLVOVolume::updateTextures()  	}  } +BOOL LLVOVolume::isVisible() const  +{ +	if(mDrawable.notNull() && mDrawable->isVisible()) +	{ +		return TRUE ; +	} + +	if(isAttachment()) +	{ +		LLViewerObject* objp = (LLViewerObject*)getParent() ; +		while(objp && !objp->isAvatar()) +		{ +			objp = (LLViewerObject*)objp->getParent() ; +		} + +		return objp && objp->mDrawable.notNull() && objp->mDrawable->isVisible() ; +	} + +	return FALSE ; +} +  void LLVOVolume::updateTextureVirtualSize()  {  	// Update the pixel area of all faces -	if(mDrawable.isNull() || !mDrawable->isVisible()) +	if(!isVisible())  	{  		return ;  	} @@ -2142,7 +2165,7 @@ void LLVOVolume::removeMediaImpl(S32 texture_index)  	}  	//make the face referencing to mMediaImplList[texture_index] to point back to the old texture. -	if(mDrawable) +	if(mDrawable && texture_index < mDrawable->getNumFaces())  	{  		LLFace* facep = mDrawable->getFace(texture_index) ;  		if(facep) @@ -2738,14 +2761,7 @@ void LLVOVolume::updateRadius()  BOOL LLVOVolume::isAttachment() const  { -	if (mState == 0) -	{ -		return FALSE; -	} -	else -	{ -		return TRUE; -	} +	return mState != 0 ;  }  BOOL LLVOVolume::isHUDAttachment() const diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 1e9b9737b1..8b68e7c78a 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -102,6 +102,7 @@ public:  				void	animateTextures();  	/*virtual*/ BOOL	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); +	            BOOL    isVisible() const ;  	/*virtual*/ BOOL	isActive() const;  	/*virtual*/ BOOL	isAttachment() const;  	/*virtual*/ BOOL	isRootEdit() const; // overridden for sake of attachments treating themselves as a root object diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index a49dc1b59d..66a6ab5e94 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -287,6 +287,9 @@ BOOL LLPanelBodyPartsListItem::postBuild()  	addWidgetToRightSide("btn_lock");  	addWidgetToRightSide("btn_edit_panel"); +	setWidgetsVisible(false); +	reshapeWidgets(); +  	return TRUE;  } diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 399442e5c4..9db6d5e08c 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -281,6 +281,8 @@ void LLWorld::removeRegion(const LLHost &host)  	delete regionp;  	updateWaterObjects(); + +	llassert_always(!gObjectList.hasMapObjectInRegion(regionp)) ;  } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 15477e0a80..39bc354250 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1967,12 +1967,12 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)  	if(drawablep && !drawablep->isDead())  	{ -	if (drawablep->isSpatialBridge()) -	{ +		if (drawablep->isSpatialBridge()) +		{  			const LLDrawable* root = ((LLSpatialBridge*) drawablep)->mDrawable;  			llassert(root); // trying to catch a bad assumption  			if (root && //  // this test may not be needed, see above -			    root->getVObj()->isAttachment()) +					root->getVObj()->isAttachment())  			{  				LLDrawable* rootparent = root->getParent();  				if (rootparent) // this IS sometimes NULL @@ -1980,24 +1980,24 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)  					LLViewerObject *vobj = rootparent->getVObj();  					llassert(vobj); // trying to catch a bad assumption  					if (vobj) // this test may not be needed, see above -		{ +					{  						const LLVOAvatar* av = vobj->asAvatar(); -			if (av && av->isImpostor()) -			{ -				return; -			} -		} +						if (av && av->isImpostor()) +						{ +							return; +						} +					}  				}  			} -		sCull->pushBridge((LLSpatialBridge*) drawablep); -	} -	else -	{ -		sCull->pushDrawable(drawablep); -	} +			sCull->pushBridge((LLSpatialBridge*) drawablep); +		} +		else +		{ +			sCull->pushDrawable(drawablep); +		} -	drawablep->setVisible(camera); -} +		drawablep->setVisible(camera); +	}  }  void LLPipeline::markMoved(LLDrawable *drawablep, BOOL damped_motion) @@ -5432,7 +5432,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  	gGL.setColorMask(true, true);  	glClearColor(0,0,0,0); -	if (for_snapshot) +	/*if (for_snapshot)  	{  		gGL.getTexUnit(0)->bind(&mGlow[1]);  		{ @@ -5443,14 +5443,21 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  			// If the snapshot is constructed from tiles, calculate which  			// tile we're in. -			const S32 num_horizontal_tiles = llceil(zoom_factor); -			const LLVector2 tile(subfield % num_horizontal_tiles, -								 (S32)(subfield / num_horizontal_tiles)); -			llassert(zoom_factor > 0.0); // Non-zero, non-negative. -			const F32 tile_size = 1.0/zoom_factor; -			 -			tc1 = tile*tile_size; // Top left texture coordinates -			tc2 = (tile+LLVector2(1,1))*tile_size; // Bottom right texture coordinates + +			//from LLViewerCamera::setPerpsective +			if (zoom_factor > 1.f) +			{ +				int pos_y = subfield / llceil(zoom_factor); +				int pos_x = subfield - (pos_y*llceil(zoom_factor)); +				F32 size = 1.f/zoom_factor; + +				tc1.set(pos_x*size, pos_y*size); +				tc2 = tc1 + LLVector2(size,size); +			} +			else +			{ +				tc2.set(1,1); +			}  			LLGLEnable blend(GL_BLEND);  			gGL.setSceneBlendType(LLRender::BT_ADD); @@ -5483,7 +5490,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  		glPopMatrix();  		return; -	} +	}*/  	{  		{ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 2c00120177..7b3cc7bdfa 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -107,6 +107,7 @@ with the same filename but different name    <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> +  <texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="Container" file_name="containers/Container.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/da/floater_web_content.xml b/indra/newview/skins/default/xui/da/floater_web_content.xml new file mode 100644 index 0000000000..74092e88ec --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_web_content.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_web_content" title=""> +	<layout_stack name="stack1"> +		<layout_panel name="nav_controls"> +			<button name="back" tool_tip="Navigér tilbage"/> +			<button name="forward" tool_tip="Navigér frem"/> +			<button name="stop" tool_tip="Stop navigering"/> +			<button name="reload" tool_tip="Genindlæs side"/> +			<combo_box name="address" tool_tip="Indtast URL her"/> +			<icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/> +			<button name="popexternal" tool_tip="Åben denne URL i din normale browser"/> +		</layout_panel> +	</layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml index 1231c4c08d..0b7a5040ae 100644 --- a/indra/newview/skins/default/xui/da/menu_login.xml +++ b/indra/newview/skins/default/xui/da/menu_login.xml @@ -16,7 +16,8 @@  		<menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/>  		<menu_item_call label="Vis betingelser" name="TOS"/>  		<menu_item_call label="Vis vigtig besked" name="Critical"/> -		<menu_item_call label="Test i web browser" name="Web Browser Test"/> +		<menu_item_call label="Media Browser Test" name="Web Browser Test"/> +		<menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/>  		<menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/>  		<menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/>  	</menu> diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml index 9dcce49708..186dbd476a 100644 --- a/indra/newview/skins/default/xui/da/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml @@ -3,6 +3,7 @@  	<menu_item_call label="Zoom tæt" name="Zoom Close"/>  	<menu_item_call label="Zoom mellem" name="Zoom Medium"/>  	<menu_item_call label="Zoom langt" name="Zoom Far"/> +	<menu_item_call label="Zoom standard" name="Zoom Default"/>  	<menu_item_check label="Rotér kort" name="Rotate Map"/>  	<menu_item_check label="Auto centrér" name="Auto Center"/>  	<menu_item_call label="Fjern ref." name="Stop Tracking"/> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index a3dcfdf4cc..fc32be9dc9 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -119,13 +119,15 @@  			<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>  			<menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/>  		</menu> +		<menu_item_call label="Fortyd" name="Undo"/> +		<menu_item_call label="Gendan" name="Redo"/>  	</menu>  	<menu label="Hjælp" name="Help">  		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> +		<menu_item_check label="Aktiver tips" name="Enable Hints"/>  		<menu_item_call label="Rapporter misbrug" name="Report Abuse"/>  		<menu_item_call label="Rapportér fejl" name="Report Bug"/>  		<menu_item_call label="Om [APP_NAME]" name="About Second Life"/> -		<menu_item_check label="Aktiver tips" name="Enable Hints"/>  	</menu>  	<menu label="Avanceret" name="Advanced">  		<menu_item_call label="Gendan teksturer" name="Rebake Texture"/> @@ -266,7 +268,8 @@  			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>  		</menu>  		<menu label="UI (brugerflade)" name="UI"> -			<menu_item_call label="Test web browser" name="Web Browser Test"/> +			<menu_item_call label="Media browser test" name="Web Browser Test"/> +			<menu_item_call label="Browser med webindhold" name="Web Content Browser"/>  			<menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/>  			<menu_item_call label="Hukommelse statistik" name="Memory Stats"/>  			<menu_item_check label="Debug konsol for region" name="Region Debug Console"/> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 27024f4eaa..a3c4897ee1 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -109,6 +109,10 @@ Vælg kun en genstand, og prøv igen.  		'Ikke-venner' vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> +	<notification name="FavoritesOnLogin"> +		Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification>  	<notification name="GrantModifyRights">  		Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.  Ønsker du at give ændre-rettgheder til [NAME]? @@ -416,7 +420,7 @@ Tilbyd venskab til [NAME]?  			<input name="message">  				[DESC] (ny)  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -426,7 +430,7 @@ Tilbyd venskab til [NAME]?  			<input name="message">  				[DESC] (ny)  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -436,7 +440,7 @@ Tilbyd venskab til [NAME]?  			<input name="new_name">  				[NAME]  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -598,9 +602,41 @@ Hent og installér venligst den nyeste version fra  http://secondlife.com/download.  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> -	<notification name="DownloadBackground"> -		En opdateret version af [APP_NAME] er hentet. -Den vil blive anvendt næste gang du genstarter [APP_NAME] +	<notification name="FailedRequiredUpdateInstall"> +		Vi kunne ikke installere en påkrævet opdatering. +Du kan ikke logge på før [APP_NAME] er blevet opdateret. + +Hent og installer venligst den nyeste klien fra +http://secondlife.com/download. +		<usetemplate name="okbutton" yestext="Afslut"/> +	</notification> +	<notification name="UpdaterServiceNotRunning"> +		Dette er en påkrævet opdatering af din Second Life installation. + +Du kan downloade opdateringen fra http://www.secondlife.com/downloads +eller du kan installere den nu. +		<usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/> +	</notification> +	<notification name="DownloadBackgroundTip"> +		Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> +	</notification> +	<notification name="DownloadBackgroundDialog"> +		Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> +	</notification> +	<notification name="RequiredUpdateDownloadedVerboseDialog"> +		Vi har hentet en påkrævet opdatering. +Version [VERSION] + +Du skal genstarte [APP_NAME] for at installere denne opdatering. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification> +	<notification name="RequiredUpdateDownloadedDialog"> +		Du skal genstarte [APP_NAME] for at installere opdateringen. +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="DeedObjectToGroup">  		<usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/> @@ -1123,14 +1159,6 @@ Prøv at vælge mindre stykker land.  	<notification name="NoContentToSearch">  		Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).  	</notification> -	<notification name="GroupVote"> -		[NAME] har forslået at stemme for: -[MESSAGE] -		<form name="form"> -			<button name="VoteNow" text="Stem nu"/> -			<button name="Later" text="Senere"/> -		</form> -	</notification>  	<notification name="SystemMessage">  		[MESSAGE]  	</notification> @@ -1682,9 +1710,7 @@ Avatar '[NAME]' har forladt udseende modus.  	<notification name="NoConnect">  		Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].  Check venligst din netværks- og firewallsetup. -		<form name="form"> -			<button name="OK" text="OK"/> -		</form> +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="NoVoiceConnect">  		Vi har problemer med at oprette forbindelse til din stemme server: @@ -1693,9 +1719,7 @@ Check venligst din netværks- og firewallsetup.  Stemme kommunikation vil ikke være tilgængelig.  Check venligst din netværks- og firewall setup. -		<form name="form"> -			<button name="OK" text="OK"/> -		</form> +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="AvatarRezLeftNotification">  		( [EXISTENCE] sekunder i live ) @@ -1731,6 +1755,9 @@ Sluk for alles lyd?  	<notification label="Undersøg verden" name="HintDestinationGuide">  		Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.  	</notification> +	<notification label="Ændre dit udseende" name="HintAvatarPicker"> +		Kunne du tænke dig at prøve et nyt udseende? Klik på knappen nedenfor for at se flere avatarer. +	</notification>  	<notification label="Side panel" name="HintSidePanel">  		Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.  	</notification> @@ -1740,6 +1767,12 @@ Sluk for alles lyd?  	<notification label="Visningsnavn" name="HintDisplayName">  		Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.  	</notification> +	<notification label="Flyt" name="HintMoveArrows"> +		For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op +	</notification> +	<notification label="Se" name="HintView"> +		For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå. +	</notification>  	<notification label="Beholdning" name="HintInventory">  		Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen "Nye ting"  	</notification> @@ -1753,6 +1786,15 @@ Sluk for alles lyd?  			<button name="open" text="Åben pop-up vindue"/>  		</form>  	</notification> +	<notification name="AuthRequest"> +		Hjemmesiden på  '<nolink>[HOST_NAME]</nolink>' in realm '[REALM]' kræver et brugernavn og password. +		<form name="form"> +			<input name="username" text="Brugernavn"/> +			<input name="password" text="Password"/> +			<button name="ok" text="Send"/> +			<button name="cancel" text="Annullér"/> +		</form> +	</notification>  	<global name="UnsupportedGLRequirements">  		Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. diff --git a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml index df1173a0a0..890f4a2f0a 100644 --- a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml @@ -21,7 +21,7 @@  	<string name="FormatYears">  		[COUNT]å  	</string> -	<text name="avatar_name" value="Ukendt"/> +	<text name="avatar_name" value="(henter)"/>  	<icon name="permission_edit_theirs_icon" tool_tip="Du kan redigere denne vens objekter"/>  	<icon name="permission_edit_mine_icon" tool_tip="Denne ven kan redigere, slette eller tage dine objekter"/>  	<icon name="permission_map_icon" tool_tip="Denne ven kan finde dig på kortet"/> diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml index 3826e8a228..0f60a6df51 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml @@ -1,10 +1,12 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_alpha_panel"> -	<panel name="avatar_alpha_color_panel"> -		<texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - øvre" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - øje" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> -	</panel> +	<scroll_container name="avatar_alpha_color_panel_scroll"> +		<panel name="avatar_alpha_color_panel"> +			<texture_picker label="Nedre alpha" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Øverste alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Hovede alpha" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Øje alpha" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Hår alpha" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> +		</panel> +	</scroll_container>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index 268f138185..dc8d9bc432 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -3,9 +3,6 @@  	<panel.string name="create_account_url">  		http://join.secondlife.com/  	</panel.string> -	<panel.string name="real_url"> -		http://secondlife.com/app/login/ -	</panel.string>  	<panel.string name="forgot_password_url">  		http://secondlife.com/account/request.php  	</panel.string> @@ -14,7 +11,7 @@  			<text name="username_text">  				Brugernavn:  			</text> -			<line_editor label="bobsmith12 eller Steller Sunshine" name="username_edit" tool_tip="Det brugernavn du valgte da du registrerede, som f.eks. bobsmith12 eller Steller Sunshine"/> +			<combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/>  			<text name="password_text">  				Password:  			</text> diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml index 2db4b278d7..94da58389f 100644 --- a/indra/newview/skins/default/xui/da/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_my_profile.xml @@ -5,30 +5,27 @@  	<string name="RegisterDateFormat">  		[REG_DATE] ([AGE])  	</string> +	<string name="name_text_args"> +		[NAME] +	</string> +	<string name="display_name_text_args"> +		[DISPLAY_NAME] +	</string>  	<layout_stack name="layout">  		<layout_panel name="profile_stack">  			<scroll_container name="profile_scroll">  				<panel name="scroll_content_panel">  					<panel name="second_life_image_panel"> -						<icon label="" name="2nd_life_edit_icon" tool_tip="Klik på Redigér profil knappen forneden for at ændre billede"/> -						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> -					</panel> -					<panel name="first_life_image_panel"> -						<icon label="" name="real_world_edit_icon" tool_tip="Klik på Redigér profil knappen forneden for at ændre billede"/> -						<text name="title_rw_descr_text" value="Real World:"/> -					</panel> -					<text name="title_member_text" value="Beboer siden:"/> -					<text name="title_acc_status_text" value="Konto status:"/> -					<text name="title_partner_text" value="Partner:"/> -					<panel name="partner_data_panel"> -						<name_box initial_value="(henter)" name="partner_text"/> +						<text name="display_name_descr_text"> +							Brugernavn +						</text> +						<text name="name_descr_text"> +							Visningsnavn +						</text> +						<button label="Profil" name="see_profile_btn" tool_tip="Se profil for denne avatar"/>  					</panel> -					<text name="title_groups_text" value="Grupper:"/>  				</panel>  			</scroll_container>  		</layout_panel>  	</layout_stack> -	<panel name="profile_me_buttons_panel"> -		<button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/> -	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml index 949ff1a058..30ad4ff9f6 100644 --- a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml @@ -3,8 +3,9 @@  	<string name="message_max_lines_count" value="7"/>  	<panel label="info_panel" name="info_panel">  		<text_editor name="message" value="besked"/> -		parse_urls="false" +	</panel> +	<panel label="control_panel" name="control_panel">  		<button label="Send" name="btn_submit"/> +		<button label="Ignorér" name="ignore_btn"/>  	</panel> -	<panel label="control_panel" name="control_panel"/>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml index 599686d360..b85a33279a 100644 --- a/indra/newview/skins/default/xui/da/panel_people.xml +++ b/indra/newview/skins/default/xui/da/panel_people.xml @@ -1,23 +1,23 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Side tray panel -->  <panel label="Personer" name="people_panel"> -	<string name="no_recent_people" value="Ingen tidligere personer. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Search] eller [secondlife:///app/worldmap World Map]."/> -	<string name="no_filtered_recent_people" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Search]."/> -	<string name="no_one_near" value="Ingen i nærheden. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Search] eller [secondlife:///app/worldmap World Map]."/> -	<string name="no_one_filtered_near" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Search]."/> +	<string name="no_recent_people" value="Ingen tidligere personer. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Søg] eller [secondlife:///app/worldmap Verdenskort]."/> +	<string name="no_filtered_recent_people" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Søg]."/> +	<string name="no_one_near" value="Ingen i nærheden. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Søg] eller [secondlife:///app/worldmap Verdenskort]."/> +	<string name="no_one_filtered_near" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Søg]."/>  	<string name="no_friends_online" value="Ingen venner online"/>  	<string name="no_friends" value="Ingen venner"/>  	<string name="no_friends_msg"> -		Find venner via [secondlife:///app/search/people Search] eller højre-klik på en beboer og tilføj dem som venner. -Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap World Map]. +		Find venner via [secondlife:///app/search/people Søg] eller højre-klik på en beboer og tilføj dem som venner. +Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Verdenskort].  	</string>  	<string name="no_filtered_friends_msg"> -		Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Search]. +		Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Søg].  	</string>  	<string name="people_filter_label" value="Filtrér personer"/>  	<string name="groups_filter_label" value="Filtrér grupper"/> -	<string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/> -	<string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Search]."/> +	<string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/> +	<string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/>  	<filter_editor label="Filtrér" name="filter_input"/>  	<tab_container name="tabs">  		<panel label="TÆT PÅ" name="nearby_panel"> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml index 604a00e0b4..b2b00db769 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml @@ -29,10 +29,10 @@  		URL'er  	</text>  	<text name="bubble_chat"> -		Chat-boble baggrund: +		Baggrundsfarve til navne-skilt (berører også Bubble Chat):  	</text> -	<color_swatch name="background" tool_tip="Vælg farve til chat-boble"/> -	<slider label="Uigennemsigtighed:" name="bubble_chat_opacity"/> +	<color_swatch name="background" tool_tip="Vælg farve til navne-skilt"/> +	<slider label="Uigennemsigtighed:" name="bubble_chat_opacity" tool_tip="Vælg gennemsigtighed for navneskilt"/>  	<text name="floater_opacity">  		Vindue uigennemsigtighed:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml index 2843f0d339..0df330b016 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml @@ -7,9 +7,11 @@  	<text name="cache_size_label_l">  		(Lokationer, billeder, web, søge historik)  	</text> +	<check_box label="Vis dig selv i søgeresultater" name="online_searchresults"/>  	<check_box label="Kun venner og grupper ved jeg er online" name="online_visibility"/>  	<check_box label="Kun venner og grupper kan sende besked til mig" name="voice_call_friends_only_check"/>  	<check_box label="Slå mikrofon fra når opkald slutter" name="auto_disengage_mic_check"/> +	<check_box label="Vis mine favorit landemærker ved login (via "Start ved" menuen)" name="favorites_on_login_check"/>  	<text name="Logs:">  		Chat Logs:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index 332b5ed1c4..479e98817e 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml @@ -39,5 +39,11 @@  	</text>  	<line_editor name="web_proxy_editor" tool_tip="Angiv navn eller IP addresse på den proxy du ønsker at anvende"/>  	<spinner label="Port nummer:" name="web_proxy_port"/> -	<check_box initial_value="sand" label="Hent og installer automatisk [APP_NAME] opdateringer" name="updater_service_active"/> +	<text name="Software updates:"> +		Software opdateringer: +	</text> +	<combo_box name="updater_service_combobox"> +		<combo_box.item label="Installér automatisk" name="Install_automatically"/> +		<combo_box.item label="Hent og installér opdateringer manuelt" name="Install_manual"/> +	</combo_box>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index 75600a93f6..5810cc21e7 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Omgivelser" name="Wind Volume"/>  	<slider label="Lyd effekter" name="SFX Volume"/>  	<slider label="Musik" name="Music Volume"/> -	<check_box label="Aktiveret" name="music_enabled"/> +	<check_box label="Aktiveret" name="enable_music"/>  	<slider label="Media" name="Media Volume"/>  	<check_box label="Aktiveret" name="enable_media"/>  	<slider label="Stemme chat" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index 8633f12d24..6e7bdfc188 100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<panel name="balance_bg"> -		<text name="balance" tool_tip="Min status" value="L$20"/> +		<text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/>  		<button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/>  	</panel>  	<text name="TimeText" tool_tip="Nuværende tid (Pacific)"> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 6f891b8d1b..aa02fc14e5 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -1843,34 +1843,34 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Fremad  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Venstre  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Højre  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Bagud  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Syd  	</string> -	<string name="West"> +	<string name="Direction_West">  		Vest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Øst  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Op  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Ned  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 26674ea594..0f029d8664 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Umgebung" name="Wind Volume"/>  	<slider label="Soundeffekte" name="SFX Volume"/>  	<slider label="Musik wird gestreamt" name="Music Volume"/> -	<check_box label="Aktiviert" name="music_enabled"/> +	<check_box label="Aktiviert" name="enable_music"/>  	<slider label="Medien" name="Media Volume"/>  	<check_box label="Aktiviert" name="enable_media"/>  	<slider label="Voice-Chat" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index e4676194aa..7284e40be2 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1888,34 +1888,34 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vorwärts  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Links  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Rechts  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Hinten  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norden  	</string> -	<string name="South"> +	<string name="Direction_South">  		Süden  	</string> -	<string name="West"> +	<string name="Direction_West">  		Westen  	</string> -	<string name="East"> +	<string name="Direction_East">  		Osten  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Nach oben  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Nach unten  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 3dd6c60095..937a97797d 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1905,7 +1905,7 @@ Only large parcels can be listed in search.  			</panel.string>        <panel.string         name="allow_public_access"> -        Allow Public Access ([MATURITY]) +        Allow Public Access ([MATURITY]) (Note: Unchecking this will create ban lines)        </panel.string>              <panel.string               name="estate_override"> @@ -1932,7 +1932,7 @@ Only large parcels can be listed in search.               name="public_access"               top_pad="5"               label_text.valign="center" -             label_text.v_pad="-7"  +             label_text.v_pad="-2"                width="278" />              <text               type="string" diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 6370ff9243..ae99fa8dd5 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -22,7 +22,11 @@       name="ToolTipMsg">          [REGION](Double-click to open Map, shift-drag to pan)      </floater.string> -    <floater.string name="mini_map_caption"> +	<floater.string +     name="AltToolTipMsg"> +		[REGION](Double-click to teleport, shift-drag to pan) +	</floater.string> +	<floater.string name="mini_map_caption">  	MINIMAP      </floater.string>      <net_map diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml index cf95257b0a..7c7ee2df4c 100644 --- a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml @@ -2,6 +2,7 @@  <floater    name="region_debug_console"    title="Region Debug" +  can_resize="true"    layout="topleft"    min_height="300"    min_width="300" @@ -12,7 +13,7 @@    left="10"     type="string"     length="1" -   follows="left|top|right|bottom" +   follows="left|right|bottom"     font="Monospace"     height="366"     width="576" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 1808fea445..b16124cb7e 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -878,7 +878,7 @@               top_delta="0"               width="190"               word_wrap="true" -             use_ellipses="ture"> +             use_ellipses="true">                  Mrs. Esbee Linden (esbee.linden)              </text>              <text diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index 6ec063cd26..e04a72cbc0 100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml @@ -12,7 +12,7 @@    auto_tile="true"    title=""    initial_mime_type="text/html" -  width="735"> +  width="780">    <layout_stack      bottom="775"      follows="left|right|top|bottom" @@ -21,7 +21,7 @@      name="stack1"      orientation="vertical"      top="20" -    width="725"> +    width="770">      <layout_panel        auto_resize="false"        default_tab_group="1" @@ -32,7 +32,7 @@        name="nav_controls"        top="400"        user_resize="false" -      width="725"> +      width="770">        <button          image_overlay="Arrow_Left_Off"  		    image_disabled="PushButton_Disabled" @@ -115,7 +115,7 @@          combo_editor.select_on_focus="true"          tool_tip="Enter URL here"          top_delta="0" -        width="627"> +        width="672">          <combo_box.commit_callback            function="WebContent.EnterAddress" />        </combo_box> @@ -125,7 +125,7 @@          follows="top|right"          image_name="Lock2"          layout="topleft" -        left_delta="575" +        left_delta="620"          top_delta="2"          visible="false"           tool_tip="Secured Browsing" @@ -142,7 +142,7 @@          height="22"          layout="topleft"          name="popexternal" -        right="725" +        right="770"          top_delta="-2"          width="22">          <button.commit_callback @@ -156,7 +156,7 @@        name="external_controls"        top_delta="0"        user_resize="false" -      width="540"> +      width="585">        <web_browser          bottom="-22"          follows="all" @@ -175,7 +175,7 @@          parse_urls="false"          text_color="0.4 0.4 0.4 1"          top_pad="5" -        width="520"/> +        width="495"/>        <progress_bar          color_bar="0.3 1.0 0.3 1"          follows="bottom|right" diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index 58d58a6ca9..76b188220d 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -78,7 +78,7 @@      <menu_item_call.on_click       function="InspectAvatar.Freeze"/>      <menu_item_call.on_visible -     function="InspectAvatar.VisibleFreezeEject"/> +     function="InspectAvatar.VisibleFreeze"/>    </menu_item_call>    <menu_item_call     label="Eject" @@ -86,7 +86,23 @@      <menu_item_call.on_click       function="InspectAvatar.Eject"/>      <menu_item_call.on_visible -     function="InspectAvatar.VisibleFreezeEject"/> +     function="InspectAvatar.VisibleEject"/> +  </menu_item_call> +  <menu_item_call +   label="Kick" +   name="kick"> +    <menu_item_call.on_click +     function="InspectAvatar.Kick"/> +    <menu_item_call.on_visible +     function="InspectAvatar.EnableGod"/> +  </menu_item_call> +  <menu_item_call +  label="CSR" +  name="csr"> +    <menu_item_call.on_click +     function="InspectAvatar.CSR" /> +    <menu_item_call.on_visible +     function="InspectAvatar.EnableGod" />    </menu_item_call>    <menu_item_call     label="Debug Textures" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index 7fa4cd840a..d2519a5aa4 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml @@ -39,6 +39,17 @@           parameter="sort_by_recent" />               </menu_item_check>      <menu_item_check +     label="Sort Folders Always by Name" +     layout="topleft" +     name="sort_folders_by_name"> +        <on_click +         function="Inventory.GearDefault.Custom.Action" +         parameter="sort_folders_by_name" /> +        <on_check +         function="Inventory.GearDefault.Check" +         parameter="sort_folders_by_name" /> +    </menu_item_check> +    <menu_item_check       label="Sort System Folders to Top"       layout="topleft"       name="sort_system_folders_to_top"> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 2207e418c8..606ff69599 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1960,6 +1960,16 @@                   function="ToggleControl"                   parameter="DebugShowRenderInfo" />              </menu_item_check> +			<menu_item_check +             label="Show Texture Info" +             name="Show Texture Info"> +                <menu_item_check.on_check +                 function="CheckControl" +                 parameter="DebugShowTextureInfo" /> +                <menu_item_check.on_click +                 function="ToggleControl" +                 parameter="DebugShowTextureInfo" /> +            </menu_item_check>              <menu_item_check               label="Show Matrices"               name="Show Matrices"> @@ -1980,6 +1990,16 @@                   function="ToggleControl"                   parameter="DebugShowColor" />              </menu_item_check> +            <menu_item_check +               label="Show Memory" +               name="Show Memory"> +              <menu_item_check.on_check +               function="CheckControl" +               parameter="DebugShowMemory" /> +              <menu_item_check.on_click +               function="ToggleControl" +               parameter="DebugShowMemory" /> +            </menu_item_check>              <menu_item_separator/> @@ -2727,18 +2747,6 @@                   function="Floater.Toggle"                   parameter="region_debug_console" />              </menu_item_check> -            <menu_item_check -             label="Region Debug Console" -             name="Region Debug Console" -             shortcut="control|shift|`" -             use_mac_ctrl="true"> -                <menu_item_check.on_check -                 function="Floater.Visible" -                 parameter="region_debug_console" /> -                <menu_item_check.on_click -                 function="Floater.Toggle" -                 parameter="region_debug_console" /> -            </menu_item_check>              <menu_item_separator /> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 5871eb0654..21c627cdfb 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -45,9 +45,9 @@       left_pad="4"       image_disabled="ComboButton_UpOff"       image_unselected="ComboButton_UpOff" -     image_selected="ComboButton_Up_On_Selected" +     image_selected="ComboButton_On"       image_pressed="ComboButton_UpSelected" -     image_pressed_selected="ComboButton_Up_On_Selected" +     image_pressed_selected="ComboButton_Selected"       height="23"       name="show_nearby_chat"       tool_tip="Shows/hides nearby chat log"> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 6a8bf87bc5..43431ea7c1 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -54,7 +54,13 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M      <string       name="no_groups_msg"       value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." /> -    <filter_editor +	<string +	 name="MiniMapToolTipMsg" +	 value="[REGION](Double-click to open Map, shift-drag to pan)"/> +	<string +	 name="AltMiniMapToolTipMsg" +	 value="[REGION](Double-click to teleport, shift-drag to pan)"/> +	<filter_editor       follows="left|top|right"       height="23"       layout="topleft" @@ -93,16 +99,26 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M           name="nearby_panel"           top="0"           width="313"> -            <avatar_list +			<net_map +			 bg_color="NetMapBackgroundColor" +			 follows="top|left|right" +			 layout="topleft" +			 left="3" +			 mouse_opaque="false" +			 name="Net Map" +			 width="307" +			 height="140" +			 top="0"/> +			<avatar_list               allow_select="true" -             follows="all" -             height="356" +             follows="top|left|bottom|right" +             height="216"               ignore_online_status="true"               layout="topleft"               left="3"               multi_select="true"               name="avatar_list" -             top="0" +             top="145"               width="307" />              <panel               background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index f0ce8b849a..26af8dc29d 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -198,9 +198,12 @@  		label="Enabled"  		layout="topleft"  		left_pad="5" -		name="music_enabled" +		name="enable_music"  		top_delta="2" -		width="350"/> +		width="350"> +		<check_box.commit_callback +			function="Pref.updateMediaAutoPlayCheckbox"/> +	</check_box>  	<slider  		control_name="AudioLevelMedia"  		disabled_control="MuteAudio" @@ -245,7 +248,10 @@  		top_delta="2"  		left_pad="5"  		name="enable_media" -		width="110"/> +		width="110"> +		<check_box.commit_callback +			function="Pref.updateMediaAutoPlayCheckbox"/> +	</check_box>  	<slider  		control_name="AudioLevelVoice"  		disabled_control="MuteAudio" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 61e3bb354f..d36220385d 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -34,6 +34,14 @@  	 name="RegisterDateFormat">  	 [REG_DATE] ([AGE])  	</string> +  <string +  name="name_text_args"> +    [NAME] +  </string> +  <string +    name="display_name_text_args"> +    [DISPLAY_NAME] +  </string>      <layout_stack       name="layout"       orientation="vertical" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 752bb6ed3a..70a40960a1 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1948,7 +1948,7 @@ Requests name of an avatar.  When data is available the dataserver event will be  	<!-- Gestures labels -->      <!-- use value="" because they have preceding spaces --> -    <string name="Chat"          value=" Chat : " /> +    <string name="Chat Message"  value=" Chat : " />      <string name="Sound"         value=" Sound : " />  	<string name="Wait"          value=" --- Wait : " />  	<string name="AnimFlagStop"  value=" Stop Animation :    " /> @@ -2321,9 +2321,6 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="accel-win-alt">Alt+</string>  	<string name="accel-win-shift">Shift+</string> -	<string name="Esc">Esc</string> -	<string name="Home">Home</string> -  	<!-- Previews -->  	<string name="FileSaved">File Saved</string>  	<string name="Receiving">Receiving</string> @@ -2335,16 +2332,16 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">PDT</string>  	<!-- Directions, HUD --> -	<string name="Forward">Forward</string> -	<string name="Left">Left</string> -	<string name="Right">Right</string> -	<string name="Back">Back</string> -	<string name="North">North</string> -	<string name="South">South</string> -	<string name="West">West</string> -	<string name="East">East</string> -	<string name="Up">Up</string> -	<string name="Down">Down</string> +	<string name="Direction_Forward">Forward</string> +	<string name="Direction_Left">Left</string> +	<string name="Direction_Right">Right</string> +	<string name="Direction_Back">Back</string> +	<string name="Direction_North">North</string> +	<string name="Direction_South">South</string> +	<string name="Direction_West">West</string> +	<string name="Direction_East">East</string> +	<string name="Direction_Up">Up</string> +	<string name="Direction_Down">Down</string>      <!-- Search Category Strings -->  	<string name="Any Category">Any Category</string> @@ -3313,4 +3310,119 @@ Abuse Report</string>    <string name="EmptyOutfitText">There are no items in this outfit</string> +  <!-- Key names begin --> +  <string name="Esc">Esc</string> +  <string name="Space">Space</string> +  <string name="Enter">Enter</string> +  <string name="Tab">Tab</string> +  <string name="Ins">Ins</string> +  <string name="Del">Del</string> +  <string name="Backsp">Backsp</string> +  <string name="Shift">Shift</string> +  <string name="Ctrl">Ctrl</string> +  <string name="Alt">Alt</string> +  <string name="CapsLock">CapsLock</string> +  <string name="Left">Left</string> +  <string name="Right">Right</string> +  <string name="Up">Up</string> +  <string name="Down">Down</string> +  <string name="Home">Home</string> +  <string name="End">End</string> +  <string name="PgUp">PgUp</string> +  <string name="PgDn">PgDn</string> + +  <string name="F1">F1</string> +  <string name="F2">F2</string> +  <string name="F3">F3</string> +  <string name="F4">F4</string> +  <string name="F5">F5</string> +  <string name="F6">F6</string> +  <string name="F7">F7</string> +  <string name="F8">F8</string> +  <string name="F9">F9</string> +  <string name="F10">F10</string> +  <string name="F11">F11</string> +  <string name="F12">F12</string> + +  <string name="Add">Add</string> +  <string name="Subtract">Subtract</string> +  <string name="Multiply">Multiply</string> +  <string name="Divide">Divide</string> +  <string name="PAD_DIVIDE">PAD_DIVIDE</string> +  <string name="PAD_LEFT">PAD_LEFT</string> +  <string name="PAD_RIGHT">PAD_RIGHT</string> +  <string name="PAD_DOWN">PAD_DOWN</string> +  <string name="PAD_UP">PAD_UP</string> +  <string name="PAD_HOME">PAD_HOME</string> +  <string name="PAD_END">PAD_END</string> +  <string name="PAD_PGUP">PAD_PGUP</string> +  <string name="PAD_PGDN">PAD_PGDN</string> +  <string name="PAD_CENTER">PAD_CENTER</string> +  <string name="PAD_INS">PAD_INS</string> +  <string name="PAD_DEL">PAD_DEL</string> +  <string name="PAD_Enter">PAD_Enter</string> +  <string name="PAD_BUTTON0">PAD_BUTTON0</string> +  <string name="PAD_BUTTON1">PAD_BUTTON1</string> +  <string name="PAD_BUTTON2">PAD_BUTTON2</string> +  <string name="PAD_BUTTON3">PAD_BUTTON3</string> +  <string name="PAD_BUTTON4">PAD_BUTTON4</string> +  <string name="PAD_BUTTON5">PAD_BUTTON5</string> +  <string name="PAD_BUTTON6">PAD_BUTTON6</string> +  <string name="PAD_BUTTON7">PAD_BUTTON7</string> +  <string name="PAD_BUTTON8">PAD_BUTTON8</string> +  <string name="PAD_BUTTON9">PAD_BUTTON9</string> +  <string name="PAD_BUTTON10">PAD_BUTTON10</string> +  <string name="PAD_BUTTON11">PAD_BUTTON11</string> +  <string name="PAD_BUTTON12">PAD_BUTTON12</string> +  <string name="PAD_BUTTON13">PAD_BUTTON13</string> +  <string name="PAD_BUTTON14">PAD_BUTTON14</string> +  <string name="PAD_BUTTON15">PAD_BUTTON15</string> + +  <string name="-">-</string> +  <string name="=">=</string> +  <string name="`">`</string> +  <string name=";">;</string> +  <string name="[">[</string> +  <string name="]">]</string> +  <string name="\">\</string> + +  <string name="0">0</string> +  <string name="1">1</string> +  <string name="2">2</string> +  <string name="3">3</string> +  <string name="4">4</string> +  <string name="5">5</string> +  <string name="6">6</string> +  <string name="7">7</string> +  <string name="8">8</string> +  <string name="9">9</string> + +  <string name="A">A</string> +  <string name="B">B</string> +  <string name="C">C</string> +  <string name="D">D</string> +  <string name="E">E</string> +  <string name="F">F</string> +  <string name="G">G</string> +  <string name="H">H</string> +  <string name="I">I</string> +  <string name="J">J</string> +  <string name="K">K</string> +  <string name="L">L</string> +  <string name="M">M</string> +  <string name="N">N</string> +  <string name="O">O</string> +  <string name="P">P</string> +  <string name="Q">Q</string> +  <string name="R">R</string> +  <string name="S">S</string> +  <string name="T">T</string> +  <string name="U">U</string> +  <string name="V">V</string> +  <string name="W">W</string> +  <string name="X">X</string> +  <string name="Y">Y</string> +  <string name="Z">Z</string> +  <!-- Key names end --> +    </strings> diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml index a7e271a1ff..d792e9f29c 100644 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml @@ -23,11 +23,11 @@      bottom="0"      tab_stop="false"      is_toggle="true" -                 image_selected="SegmentedBtn_Right_Selected_Press" -                 image_unselected="SegmentedBtn_Right_Off" -		 image_pressed="SegmentedBtn_Right_Press" -		 image_pressed_selected="SegmentedBtn_Right_Selected_Press" -		 image_overlay="Arrow_Small_Up" +    image_disabled="ComboButton_UpOff" +    image_unselected="ComboButton_UpOff" +    image_selected="ComboButton_On" +    image_pressed="ComboButton_UpSelected" +    image_pressed_selected="ComboButton_Selected"      />    <monitor      follows="right"  diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index 7989100c09..6c4ab0f14f 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Ambiental" name="Wind Volume"/>  	<slider label="Efectos de sonido" name="SFX Volume"/>  	<slider label="Música en streaming" name="Music Volume"/> -	<check_box label="Activada" name="music_enabled"/> +	<check_box label="Activada" name="enable_music"/>  	<slider label="Multimedia" name="Media Volume"/>  	<check_box label="Activada" name="enable_media"/>  	<slider label="Chat de voz" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 810b1630dd..19adf29d29 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1846,34 +1846,34 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Adelante  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Izquierda  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Derecha  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Atrás  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norte  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sur  	</string> -	<string name="West"> +	<string name="Direction_West">  		Oeste  	</string> -	<string name="East"> +	<string name="Direction_East">  		Este  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Arriba  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Abajo  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml index 7828d2df97..6287f10f3e 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="gesture_preview">  	<floater.string name="step_anim"> -		Animation à jouer : +		Animation à exécuter :  	</floater.string>  	<floater.string name="step_sound">  		Son à lire : diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml index 86a2ddd185..20af901ddc 100644 --- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml @@ -1,6 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu name="hide_navbar_menu">  	<menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/> -	<menu_item_check label="Afficher la barre des Favoris" name="ShowNavbarFavoritesPanel"/> +	<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>  	<menu_item_check label="Afficher la mini-barre d'emplacement" name="ShowMiniLocationPanel"/>  </menu> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index 654d40e2f9..48630918d7 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -9,13 +9,13 @@  	<slider label="Ambiant" name="Wind Volume"/>  	<slider label="Effets sonores" name="SFX Volume"/>  	<slider label="Flux musical" name="Music Volume"/> -	<check_box label="Activé" name="music_enabled"/> +	<check_box label="Activé" name="enable_music"/>  	<slider label="Média" name="Media Volume"/>  	<check_box label="Activé" name="enable_media"/>  	<slider label="Chat vocal" name="Voice Volume"/>  	<check_box label="Activé" name="enable_voice_check"/>  	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/> -	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/> +	<check_box label="Lecture du média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/>  	<text name="voice_chat_settings">  		Paramètres du chat vocal  	</text> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index d75f6c731d..74c1fd8622 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1888,34 +1888,34 @@  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vers l'avant  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Gauche  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Droite  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Arrière  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sud  	</string> -	<string name="West"> +	<string name="Direction_West">  		Ouest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Est  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Haut  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Bas  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml index 2ddb226020..6e70a314c5 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml @@ -6,7 +6,7 @@  	<slider label="Ambiente" name="Wind Volume"/>  	<slider label="Effetti sonori" name="SFX Volume"/>  	<slider label="Musica in streaming" name="Music Volume"/> -	<check_box label="Abilitato" name="music_enabled"/> +	<check_box label="Abilitato" name="enable_music"/>  	<slider label="Multimediale" name="Media Volume"/>  	<check_box label="Abilitato" name="enable_media"/>  	<slider label="Chat vocale" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index dfe635182e..37dc90d056 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -1846,34 +1846,34 @@ Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		Ora legale Pacifico  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Avanti  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Sinistra  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Destra  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Indietro  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sud  	</string> -	<string name="West"> +	<string name="Direction_West">  		Ovest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Est  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Su  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Giù  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index 4f29ae7b44..9fbbd46220 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -6,7 +6,7 @@  	<slider label="風" name="Wind Volume"/>  	<slider label="効果音" name="SFX Volume"/>  	<slider label="ストリーミング音楽" name="Music Volume"/> -	<check_box label="有効" name="music_enabled"/> +	<check_box label="有効" name="enable_music"/>  	<slider label="メディア" name="Media Volume"/>  	<check_box label="有効" name="enable_media"/>  	<slider label="ボイスチャット" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 187f21257a..75cb126874 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1882,34 +1882,34 @@  	<string name="PDT">  		太平洋夏時間  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		前  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		左  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		右  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		後ろ  	</string> -	<string name="North"> +	<string name="Direction_North">  		北  	</string> -	<string name="South"> +	<string name="Direction_South">  		南  	</string> -	<string name="West"> +	<string name="Direction_West">  		西  	</string> -	<string name="East"> +	<string name="Direction_East">  		東  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		上  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		下  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml index 07265d2716..87e3638a49 100644 --- a/indra/newview/skins/default/xui/nl/strings.xml +++ b/indra/newview/skins/default/xui/nl/strings.xml @@ -1441,34 +1441,34 @@ Verwacht .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vooruit  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Links  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Rechts  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Achteruit  	</string> -	<string name="North"> +	<string name="Direction_North">  		Noord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Zuid  	</string> -	<string name="West"> +	<string name="Direction_West">  		West  	</string> -	<string name="East"> +	<string name="Direction_East">  		Oost  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Omhoog  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Omlaag  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml index c708cc0b99..ac93949a1b 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Otoczenie" name="Wind Volume"/>  	<slider label="Efekty dźwiękowe" name="SFX Volume"/>  	<slider label="Muzyka strumieniowa" name="Music Volume"/> -	<check_box label="Odtwarzaj media audio" name="music_enabled"/> +	<check_box label="Odtwarzaj media audio" name="enable_music"/>  	<slider label="Media" name="Media Volume"/>  	<check_box label="Odtwarzaj media" name="enable_media"/>  	<slider label="Komunikacja głosowa" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index d1fb382a2d..e6019bf66d 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -1843,34 +1843,34 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Do przodu  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		W lewo  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		W prawo  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Wróć  	</string> -	<string name="North"> +	<string name="Direction_North">  		Północ  	</string> -	<string name="South"> +	<string name="Direction_South">  		Południe  	</string> -	<string name="West"> +	<string name="Direction_West">  		Zachód  	</string> -	<string name="East"> +	<string name="Direction_East">  		Wschód  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		W górę  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		W dół  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml index 60f51c33e5..3846bfb377 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Ambiente" name="Wind Volume"/>  	<slider label="Efeitos sonoros" name="SFX Volume"/>  	<slider label="Streaming de música" name="Music Volume"/> -	<check_box label="Ativado" name="music_enabled"/> +	<check_box label="Ativado" name="enable_music"/>  	<slider label="Mídia" name="Media Volume"/>  	<check_box label="Ativado" name="enable_media"/>  	<slider label="Bate-papo de voz" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ce2c2ddaa1..06123e0118 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -1846,34 +1846,34 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Avante  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Esquerda  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Direita  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Atrás  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norte  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sul  	</string> -	<string name="West"> +	<string name="Direction_West">  		Oeste  	</string> -	<string name="East"> +	<string name="Direction_East">  		Leste  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Acima  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Abaixo  	</string>  	<string name="Any Category"> diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp index 9da851ffc4..d691bb6c44 100644 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ b/indra/newview/tests/llcapabilitylistener_test.cpp @@ -72,7 +72,7 @@ struct TestCapabilityProvider: public LLCapabilityProvider      {          mCaps[cap] = url;      } -    LLHost getHost() const { return mHost; } +    const LLHost& getHost() const { return mHost; }      std::string getDescription() const { return "TestCapabilityProvider"; }      LLHost mHost; diff --git a/indra/newview/tests/llsimplestat_test.cpp b/indra/newview/tests/llsimplestat_test.cpp index 60a8cac995..b556941f4a 100644 --- a/indra/newview/tests/llsimplestat_test.cpp +++ b/indra/newview/tests/llsimplestat_test.cpp @@ -3,31 +3,25 @@   * @date 2010-10-22   * @brief Test cases for some of llsimplestat.h   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp index 1bb4fb7c0c..3faddc13c1 100644 --- a/indra/newview/tests/llviewerassetstats_test.cpp +++ b/indra/newview/tests/llviewerassetstats_test.cpp @@ -3,31 +3,25 @@   * @date 2010-10-28   * @brief Test cases for some of newview/llviewerassetstats.cpp   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py index aeebb0cfd1..1c7204a6b6 100644 --- a/indra/newview/tests/test_llxmlrpc_peer.py +++ b/indra/newview/tests/test_llxmlrpc_peer.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   test_llxmlrpc_peer.py  @author Nat Goodspeed diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 92b0129611..3e09b9daa0 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1,29 +1,31 @@ -#!/usr/bin/python -# @file viewer_manifest.py -# @author Ryan Williams -# @brief Description of all installer viewer files, and methods for packaging -#        them into installers for all supported platforms. -# -# $LicenseInfo:firstyear=2006&license=viewerlgpl$ -# Second Life Viewer Source Code -# Copyright (C) 2010, Linden Research, Inc. -#  -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; -# version 2.1 of the License only. -#  -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -# Lesser General Public License for more details. -#  -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -#  -# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -# $/LicenseInfo$ +#!/usr/bin/env python +"""\ +@file viewer_manifest.py +@author Ryan Williams +@brief Description of all installer viewer files, and methods for packaging +       them into installers for all supported platforms. + +$LicenseInfo:firstyear=2006&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2006-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import sys  import os.path  import re diff --git a/indra/test/test_llmanifest.py b/indra/test/test_llmanifest.py index 89c36f95dd..a97abbc6ee 100644 --- a/indra/test/test_llmanifest.py +++ b/indra/test/test_llmanifest.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """  @file test_llmanifest.py  @author Ryan Williams diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index 4a2272032b..e9d4d99753 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -1620,7 +1620,7 @@ mediaPanel* LLMediaPluginTest::addMediaPanel( std::string url )  	std::string user_data_path = std::string( cwd ) + "/";  #endif  	media_source->setUserDataPath(user_data_path); -	media_source->init( launcher_name, plugin_name, false ); +	media_source->init( launcher_name, user_data_path, plugin_name, false );  	media_source->setDisableTimeout(mDisableTimeout);  	// make a new panel and save parameters @@ -1860,7 +1860,7 @@ mediaPanel* LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string  #endif  	media_source->setUserDataPath(user_data_path); -	media_source->init( launcher_name, plugin_name, false ); +	media_source->init( launcher_name, user_data_path, plugin_name, false );  	media_source->setDisableTimeout(mDisableTimeout);  	// make a new panel and save parameters diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index ea242f45cd..1888f191e2 100644 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -373,9 +373,8 @@ void LLUpdaterServiceImpl::optionalUpdate(std::string const & newVersion,  	stopTimer();  	mNewVersion = newVersion;  	mIsDownloading = true; -	mUpdateDownloader.download(uri, hash, newVersion, false); -	  	setState(LLUpdaterService::DOWNLOADING); +	mUpdateDownloader.download(uri, hash, newVersion, false);  }  void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion, @@ -385,9 +384,8 @@ void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion,  	stopTimer();  	mNewVersion = newVersion;  	mIsDownloading = true; -	mUpdateDownloader.download(uri, hash, newVersion, true); -	  	setState(LLUpdaterService::DOWNLOADING); +	mUpdateDownloader.download(uri, hash, newVersion, true);  }  void LLUpdaterServiceImpl::upToDate(void) diff --git a/scripts/build_version.py b/scripts/build_version.py index 4bef290b7d..203d76fe9e 100755 --- a/scripts/build_version.py +++ b/scripts/build_version.py @@ -1,16 +1,39 @@  #!/usr/bin/env python -# -# Print the build information embedded in a header file. -# -# Expects to be invoked from the command line with a file name and a -# list of directories to search.  The file name will be one of the -# following: -# -#   llversionserver.h -#   llversionviewer.h -# -# The directory list that follows will include indra/llcommon, where -# these files live. +"""\ +@file   build_version.py +@brief Print the build information embedded in a header file. + +  Expects to be invoked from the command line with a file name and a +  list of directories to search.  The file name will be one of the +  following: + +    llversionserver.h +    llversionviewer.h + +  The directory list that follows will include indra/llcommon, where +  these files live. + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import errno, os, re diff --git a/scripts/md5check.py b/scripts/md5check.py index 951fe0105c..1a54a2844c 100755 --- a/scripts/md5check.py +++ b/scripts/md5check.py @@ -1,32 +1,27 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file md5check.py  @brief Replacement for message template compatibility verifier. -$LicenseInfo:firstyear=20i10&license=viewergpl$ -Copyright (c) 2010, Linden Research, Inc. - +$LicenseInfo:firstyear=2010&license=viewerlgpl$  Second Life Viewer Source Code -The source code in this file ("Source Code") is provided by Linden Lab -to you under the terms of the GNU General Public License, version 2.0 -("GPL"), unless you have obtained a separate licensing agreement -("Other License"), formally executed by you and Linden Lab.  Terms of -the GPL can be found in doc/GPL-license.txt in this distribution, or -online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - -There are special exceptions to the terms and conditions of the GPL as -it is applied to this Source Code. View the full text of the exception -in the file doc/FLOSS-exception.txt in this software distribution, or -online at -http://secondlifegrid.net/programs/open_source/licensing/flossexception - -By copying, modifying or distributing this software, you acknowledge -that you have read and understood your obligations described above, -and agree to abide by those obligations. - -ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO -WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -COMPLETENESS OR PERFORMANCE. +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA  $/LicenseInfo$  """ diff --git a/scripts/setup-path.py b/scripts/setup-path.py index 55e0f1a85f..ce83d815bf 100644 --- a/scripts/setup-path.py +++ b/scripts/setup-path.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file setup-path.py  @brief Get the python library directory in the path, so we don't have diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py index ddb050fbbb..7f3fed88a9 100644 --- a/scripts/template_verifier.py +++ b/scripts/template_verifier.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file template_verifier.py  @brief Message template compatibility verifier. | 
