From 840cb864a3b41ccff310077eff487c3fa1d6b805 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 5 Jan 2013 09:17:51 -0500 Subject: MAINT-2155: replace embedded mac-updater.app with a Python script. Remove mac-updater subtree from viewer source, along with the update_install bash script that invoked it. Remove all mention of mac-updater in CMakeLists.txt files and in viewer_manifest.py. Change Mac update_install bash script references in viewer_manifest.py and in llupdaterservice.cpp (which invokes it) to new Python update_install.py. Add update_install.py, messageframe.py (which puts up some Tkinter UI) and janitor.py (cloned from vita, it's exactly what we need here). --- indra/newview/CMakeLists.txt | 5 ++--- indra/newview/viewer_manifest.py | 7 ++++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index dff2c04fbc..5da282cbd3 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1960,7 +1960,7 @@ if (DARWIN) DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) - add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-updater mac-crash-logger) + add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-crash-logger) if (ENABLE_SIGNING) set(SIGNING_SETTING "--signature=${SIGNING_IDENTITY}") @@ -2013,12 +2013,11 @@ if (PACKAGE) # *TODO: Generate these search dirs in the cmake files related to each binary. list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/llplugin/slplugin/${CMAKE_CFG_INTDIR}") list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/mac_crash_logger/${CMAKE_CFG_INTDIR}") - list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/mac_updater/${CMAKE_CFG_INTDIR}") list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/gstreamer010/${CMAKE_CFG_INTDIR}") list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/quicktime/${CMAKE_CFG_INTDIR}") list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/webkit/${CMAKE_CFG_INTDIR}") set(VIEWER_SYMBOL_FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/secondlife-symbols-darwin.tar.bz2") - set(VIEWER_EXE_GLOBS "'Second Life' SLPlugin mac-updater mac-crash-logger") + set(VIEWER_EXE_GLOBS "'Second Life' SLPlugin mac-crash-logger") set(VIEWER_LIB_GLOB "*.dylib") endif (DARWIN) if (LINUX) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index ea75d4f4f6..c09043b879 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -672,7 +672,9 @@ class DarwinManifest(ViewerManifest): self.path("../packages/lib/release/libndofdev.dylib", dst="Resources/libndofdev.dylib") self.path("../packages/lib/release/libhunspell-1.3.0.dylib", dst="Resources/libhunspell-1.3.0.dylib") - self.path("../viewer_components/updater/scripts/darwin/update_install", "MacOS/update_install") + if self.prefix(dst="MacOS"): + self.path2basename("../viewer_components/updater/scripts/darwin", "*.py") + self.end_prefix() # most everything goes in the Resources directory if self.prefix(src="", dst="Resources"): @@ -764,7 +766,6 @@ class DarwinManifest(ViewerManifest): # our apps for app_bld_dir, app in (("mac_crash_logger", "mac-crash-logger.app"), - ("mac_updater", "mac-updater.app"), # plugin launcher (os.path.join("llplugin", "slplugin"), "SLPlugin.app"), ): @@ -810,7 +811,7 @@ class DarwinManifest(ViewerManifest): def copy_finish(self): # Force executable permissions to be set for scripts # see CHOP-223 and http://mercurial.selenic.com/bts/issue1802 - for script in 'Contents/MacOS/update_install',: + for script in 'Contents/MacOS/update_install.py',: self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script)) def package_finish(self): -- cgit v1.2.3 From d7e90f4160aaa81e30206c80047b82833c049482 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 7 Feb 2013 11:56:57 -0500 Subject: derive version number from indra/VIEWER_VERSION.txt --- indra/newview/CMakeLists.txt | 72 ++++++++++++++++++++++----- indra/newview/English.lproj/InfoPlist.strings | 4 +- indra/newview/Info-SecondLife.plist | 2 +- indra/newview/VIEWER_VERSION.txt | 1 + indra/newview/linux_tools/wrapper.sh | 2 +- indra/newview/llappviewer.cpp | 2 +- indra/newview/llversioninfo.cpp | 58 ++++++++++----------- indra/newview/llversioninfo.h | 1 + indra/newview/res/viewerRes.rc | 10 ++-- indra/newview/tests/llversioninfo_test.cpp | 28 +++++------ indra/newview/viewer_manifest.py | 8 ++- 11 files changed, 120 insertions(+), 68 deletions(-) create mode 100644 indra/newview/VIEWER_VERSION.txt (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e93d73ad0e..dbd6a60a7c 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -4,7 +4,6 @@ project(viewer) include(00-Common) include(Boost) -include(BuildVersion) include(DBusGlib) include(DirectX) include(OpenSSL) @@ -1228,6 +1227,21 @@ set(viewer_HEADER_FILES source_group("CMake Rules" FILES ViewerInstall.cmake) +set_source_files_properties( + llversioninfo.cpp tests/llversioninfo_test.cpp + PROPERTIES + OBJECT_DEPENDS always_generate_version + COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake + ) + +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt + COMMAND echo "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + COMMENT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Generating viewer_version.txt + ) +add_custom_target(generate_viewer_version DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt") +add_dependencies(generate_viewer_version "${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt") + if (DARWIN) LIST(APPEND viewer_SOURCE_FILES llappviewermacosx.cpp) @@ -1308,12 +1322,16 @@ if (WINDOWS) string(TOLOWER ${VIEWER_CHANNEL} channel_lower) if(channel_lower MATCHES "^second life release") set(ICON_PATH "release") + set(VIEWER_MACOSX_PHASE "f") elseif(channel_lower MATCHES "^second life beta viewer") set(ICON_PATH "beta") + set(VIEWER_MACOSX_PHASE "b") elseif(channel_lower MATCHES "^second life development") set(ICON_PATH "development") + set(VIEWER_MACOSX_PHASE "d") elseif(channel_lower MATCHES "project") set(ICON_PATH "project") + set(VIEWER_MACOSX_PHASE "a") endif() message("Copying icons for ${ICON_PATH}") execute_process( @@ -1382,8 +1400,11 @@ if (WINDOWS) set_source_files_properties(${viewer_RESOURCE_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/res/viewerRes.rc + ${CMAKE_CURRENT_BINARY_DIR}/res/viewerRes.rc + ) set(viewer_RESOURCE_FILES - res/viewerRes.rc + ${CMAKE_CURRENT_BINARY_DIR}/res/viewerRes.rc ${viewer_RESOURCE_FILES} ) @@ -1695,10 +1716,13 @@ if (WINDOWS) --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} --grid=${GRID} + --channel=${VIEWER_CHANNEL} + --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/copy_touched.bat DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt stage_third_party_libs ${COPY_INPUT_DEPENDENCIES} COMMENT "Performing viewer_manifest copy" @@ -1757,6 +1781,7 @@ if (WINDOWS) --build=${CMAKE_CURRENT_BINARY_DIR} --buildtype=${CMAKE_BUILD_TYPE} --channel=${VIEWER_CHANNEL} + --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} --grid=${GRID} @@ -1766,12 +1791,14 @@ if (WINDOWS) DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt ${COPY_INPUT_DEPENDENCIES} ) add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat windows-setup-build-all + generate_viewer_version ) # temporarily disable packaging of event_host until hg subrepos get # sorted out on the parabuild cluster... @@ -1854,14 +1881,11 @@ else (USE_KDU) ) endif (USE_KDU) -build_version(viewer) - set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Path to artwork files.") - if (LINUX) - set(product SecondLife-${ARCH}-${viewer_VERSION}) + set(product SecondLife-${ARCH}-${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}) # These are the generated targets that are copied to package/ set(COPY_INPUT_DEPENDENCIES @@ -1883,6 +1907,7 @@ if (LINUX) --build=${CMAKE_CURRENT_BINARY_DIR} --buildtype=${CMAKE_BUILD_TYPE} --channel=${VIEWER_CHANNEL} + --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged --grid=${GRID} @@ -1892,11 +1917,13 @@ if (LINUX) --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt ${COPY_INPUT_DEPENDENCIES} ) if (PACKAGE) endif (PACKAGE) + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched COMMAND ${PYTHON_EXECUTABLE} @@ -1910,9 +1937,12 @@ if (LINUX) --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged --grid=${GRID} + --channel=${VIEWER_CHANNEL} + --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --source=${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt ${COPY_INPUT_DEPENDENCIES} COMMENT "Performing viewer_manifest copy" ) @@ -1929,20 +1959,29 @@ endif (LINUX) if (DARWIN) set(product "Second Life") + set_target_properties( ${VIEWER_BINARY_NAME} PROPERTIES OUTPUT_NAME "${product}" - MACOSX_BUNDLE_INFO_STRING "info string - localize me" + MACOSX_BUNDLE_INFO_STRING "Second Life Viewer" MACOSX_BUNDLE_ICON_FILE "secondlife.icns" MACOSX_BUNDLE_GUI_IDENTIFIER "Second Life" - MACOSX_BUNDLE_LONG_VERSION_STRING "ververver" + MACOSX_BUNDLE_LONG_VERSION_STRING "${VIEWER_CHANNEL} ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" MACOSX_BUNDLE_BUNDLE_NAME "Second Life" - MACOSX_BUNDLE_SHORT_VERSION_STRING "asdf" - MACOSX_BUNDLE_BUNDLE_VERSION "asdf" - MACOSX_BUNDLE_COPYRIGHT "copyright linden lab 2007 - localize me and run me through a legal wringer" + MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}" + MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}" + MACOSX_BUNDLE_COPYRIGHT "Copyright © Linden Research, Inc. 2007" ) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/Info-SecondLife.plist" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app/Contents/Info.plist" + ) + #configure_file( + # "${CMAKE_CURRENT_SOURCE_DIR}/English.lproj/InfoPlist.strings" + # "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app/Contents/Resources/English.lproj/InfoPlist.strings" + # ) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${PYTHON_EXECUTABLE} @@ -1955,8 +1994,13 @@ if (DARWIN) --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app --grid=${GRID} + --channel=${VIEWER_CHANNEL} + --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --source=${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + DEPENDS + ${VIEWER_BINARY_NAME} + ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt ) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-updater mac-crash-logger) @@ -1969,6 +2013,7 @@ if (DARWIN) if (PACKAGE) add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME}) + add_dependencies(package generate_viewer_version) add_custom_command( TARGET package POST_BUILD @@ -1982,12 +2027,15 @@ if (DARWIN) --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app --grid=${GRID} + --channel=${VIEWER_CHANNEL} + --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched ${SIGNING_SETTING} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt ) endif (PACKAGE) endif (DARWIN) diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings index 5c7cacedec..041b8cea0b 100644 --- a/indra/newview/English.lproj/InfoPlist.strings +++ b/indra/newview/English.lproj/InfoPlist.strings @@ -2,6 +2,6 @@ CFBundleName = "Second Life"; -CFBundleShortVersionString = "Second Life version 2.1.0.13828"; -CFBundleGetInfoString = "Second Life version 2.1.0.13828, Copyright 2004-2009 Linden Research, Inc."; +CFBundleShortVersionString = "Second Life version %%VERSION%%"; +CFBundleGetInfoString = "Second Life version %%VERSION%%, Copyright 2004 Linden Research, Inc."; diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist index f7b11b217c..a19844f11c 100644 --- a/indra/newview/Info-SecondLife.plist +++ b/indra/newview/Info-SecondLife.plist @@ -60,7 +60,7 @@ CFBundleVersion - 2.1.0.13828 + ${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION} CSResourcesFileMapped diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt new file mode 100644 index 0000000000..6cb9d3dd0d --- /dev/null +++ b/indra/newview/VIEWER_VERSION.txt @@ -0,0 +1 @@ +3.4.3 diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index 20936c6460..98c8674fa5 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -113,7 +113,7 @@ export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}" # Have to deal specially with gridargs.dat; typical contents look like: -# --channel "Second Life Developer" --settings settings_developer.xml +# --channel "Second Life Test" --settings settings_test.xml # Simply embedding $( +#include #include "llversioninfo.h" -#include "llversionviewer.h" +#if ! defined(LL_VIEWER_VERSION_MAJOR) \ + || ! defined(LL_VIEWER_VERSION_MINOR) \ + || ! defined(LL_VIEWER_VERSION_PATCH) \ + || ! defined(LL_VIEWER_VERSION_BUILD) + #error "Version information is undefined" +#endif + +#ifndef LL_VIEWER_CHANNEL +#define LL_VIEWER_CHANNEL "Second Life Test" +#endif +const char * const LL_CHANNEL = LL_VIEWER_CHANNEL; // -// Set the version numbers in indra/llcommon/llversionviewer.h +// Set the version numbers in indra/VIEWER_VERSION // //static S32 LLVersionInfo::getMajor() { - return LL_VERSION_MAJOR; + return LL_VIEWER_VERSION_MAJOR; } //static S32 LLVersionInfo::getMinor() { - return LL_VERSION_MINOR; + return LL_VIEWER_VERSION_MINOR; } //static S32 LLVersionInfo::getPatch() { - return LL_VERSION_PATCH; + return LL_VIEWER_VERSION_PATCH; } //static S32 LLVersionInfo::getBuild() { - return LL_VERSION_BUILD; + return LL_VIEWER_VERSION_BUILD; } //static const std::string &LLVersionInfo::getVersion() { static std::string version(""); - if (version.empty()) { - // cache the version string std::ostringstream stream; - stream << LL_VERSION_MAJOR << "." - << LL_VERSION_MINOR << "." - << LL_VERSION_PATCH << "." - << LL_VERSION_BUILD; + stream << LLVersionInfo::getShortVersion() << "." << LLVersionInfo::getBuild(); + // cache the version string version = stream.str(); } - return version; } //static const std::string &LLVersionInfo::getShortVersion() { - static std::string version(""); - - if (version.empty()) + static std::string short_version(""); + if(short_version.empty()) { // cache the version string std::ostringstream stream; - stream << LL_VERSION_MAJOR << "." - << LL_VERSION_MINOR << "." - << LL_VERSION_PATCH; - version = stream.str(); + stream << LL_VIEWER_VERSION_MAJOR << "." + << LL_VIEWER_VERSION_MINOR << "." + << LL_VIEWER_VERSION_PATCH; + short_version = stream.str(); } - - return version; + return short_version; } namespace @@ -100,7 +104,7 @@ namespace /// Storage of the channel name the viewer is using. // The channel name is set by hardcoded constant, // or by calling LLVersionInfo::resetChannel() - std::string sWorkingChannelName(LL_CHANNEL); + std::string sWorkingChannelName(LL_VIEWER_CHANNEL); // Storage for the "version and channel" string. // This will get reset too. @@ -113,11 +117,7 @@ const std::string &LLVersionInfo::getChannelAndVersion() if (sVersionChannel.empty()) { // cache the version string - std::ostringstream stream; - stream << LLVersionInfo::getChannel() - << " " - << LLVersionInfo::getVersion(); - sVersionChannel = stream.str(); + sVersionChannel = LLVersionInfo::getChannel() + " " + LLVersionInfo::getVersion(); } return sVersionChannel; diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 6f64544f3b..077105cae8 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -29,6 +29,7 @@ #define LL_LLVERSIONINFO_H #include +#include "stdtypes.h" /// /// This API provides version information for the viewer. This diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index df75f3f697..5360842134 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -135,8 +135,8 @@ TOOLNO CURSOR "llno.cur" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,1,1,0 - PRODUCTVERSION 2,1,1,0 + FILEVERSION ${VIEWER_VERSION_MAJOR},${VIEWER_VERSION_MINOR},${VIEWER_VERSION_PATCH},${VIEWER_VERSION_BUILD} + PRODUCTVERSION ${VIEWER_VERSION_MAJOR},${VIEWER_VERSION_MINOR},${VIEWER_VERSION_PATCH},${VIEWER_VERSION_BUILD} FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -153,12 +153,12 @@ BEGIN BEGIN VALUE "CompanyName", "Linden Lab" VALUE "FileDescription", "Second Life" - VALUE "FileVersion", "2.1.1.0" + VALUE "FileVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_BUILD}" VALUE "InternalName", "Second Life" - VALUE "LegalCopyright", "Copyright � 2001-2010, Linden Research, Inc." + VALUE "LegalCopyright", "Copyright � 2001, Linden Research, Inc." VALUE "OriginalFilename", "SecondLife.exe" VALUE "ProductName", "Second Life" - VALUE "ProductVersion", "2.1.1.0" + VALUE "ProductVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_BUILD}" END END BLOCK "VarFileInfo" diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp index 398d8f16ed..6b0be29c2d 100644 --- a/indra/newview/tests/llversioninfo_test.cpp +++ b/indra/newview/tests/llversioninfo_test.cpp @@ -28,7 +28,6 @@ #include "../test/lltut.h" #include "../llversioninfo.h" -#include "llversionviewer.h" namespace tut { @@ -38,20 +37,20 @@ namespace tut : mResetChannel("Reset Channel") { std::ostringstream stream; - stream << LL_VERSION_MAJOR << "." - << LL_VERSION_MINOR << "." - << LL_VERSION_PATCH << "." - << LL_VERSION_BUILD; + stream << LL_VIEWER_VERSION_MAJOR << "." + << LL_VIEWER_VERSION_MINOR << "." + << LL_VIEWER_VERSION_PATCH << "." + << LL_VIEWER_VERSION_BUILD; mVersion = stream.str(); stream.str(""); - stream << LL_VERSION_MAJOR << "." - << LL_VERSION_MINOR << "." - << LL_VERSION_PATCH; + stream << LL_VIEWER_VERSION_MAJOR << "." + << LL_VIEWER_VERSION_MINOR << "." + << LL_VIEWER_VERSION_PATCH; mShortVersion = stream.str(); stream.str(""); - stream << LL_CHANNEL + stream << LL_VIEWER_CHANNEL << " " << mVersion; mVersionAndChannel = stream.str(); @@ -78,20 +77,19 @@ namespace tut { ensure_equals("Major version", LLVersionInfo::getMajor(), - LL_VERSION_MAJOR); + LL_VIEWER_VERSION_MAJOR); ensure_equals("Minor version", LLVersionInfo::getMinor(), - LL_VERSION_MINOR); + LL_VIEWER_VERSION_MINOR); ensure_equals("Patch version", LLVersionInfo::getPatch(), - LL_VERSION_PATCH); + LL_VIEWER_VERSION_PATCH); ensure_equals("Build version", LLVersionInfo::getBuild(), - LL_VERSION_BUILD); + LL_VIEWER_VERSION_BUILD); ensure_equals("Channel version", LLVersionInfo::getChannel(), - LL_CHANNEL); - + LL_VIEWER_CHANNEL); ensure_equals("Version String", LLVersionInfo::getVersion(), mVersion); diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index e7108141ee..20f64dbf4b 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -666,7 +666,7 @@ class DarwinManifest(ViewerManifest): self.path(self.args['configuration'] + "/Second Life.app", dst="") if self.prefix(src="", dst="Contents"): # everything goes in Contents - self.path("Info-SecondLife.plist", dst="Info.plist") + self.path("Info.plist", dst="Info.plist") # copy additional libs in /Contents/MacOS/ self.path("../packages/lib/release/libndofdev.dylib", dst="Resources/libndofdev.dylib") @@ -694,7 +694,11 @@ class DarwinManifest(ViewerManifest): self.path("SecondLife.nib") # Translations - self.path("English.lproj") + self.path("English.lproj/language.txt") + self.replace_in(src="English.lproj/InfoPlist.strings", + dst="English.lproj/InfoPlist.strings", + searchdict={'%%VERSION%%':'.'.join(self.args['version'])} + ) self.path("German.lproj") self.path("Japanese.lproj") self.path("Korean.lproj") -- cgit v1.2.3 From 5ea68c69a443fb9364c6e86ec373d3bd57382da7 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 12 Feb 2013 10:50:47 -0500 Subject: convert to new channel name scheme and remove login_channel build time parameter --- indra/newview/CMakeLists.txt | 11 ++---- indra/newview/icons/development/secondlife.icns | Bin 233026 -> 0 bytes indra/newview/icons/development/secondlife.ico | Bin 77117 -> 0 bytes indra/newview/icons/development/secondlife_128.png | Bin 17499 -> 0 bytes indra/newview/icons/development/secondlife_16.png | Bin 3471 -> 0 bytes indra/newview/icons/development/secondlife_256.BMP | Bin 196662 -> 0 bytes indra/newview/icons/development/secondlife_256.png | Bin 47952 -> 0 bytes indra/newview/icons/development/secondlife_32.png | Bin 4649 -> 0 bytes indra/newview/icons/development/secondlife_48.png | Bin 6190 -> 0 bytes indra/newview/icons/development/secondlife_512.png | Bin 147689 -> 0 bytes indra/newview/viewer_manifest.py | 40 ++++++++------------- 11 files changed, 17 insertions(+), 34 deletions(-) delete mode 100644 indra/newview/icons/development/secondlife.icns delete mode 100644 indra/newview/icons/development/secondlife.ico delete mode 100644 indra/newview/icons/development/secondlife_128.png delete mode 100644 indra/newview/icons/development/secondlife_16.png delete mode 100644 indra/newview/icons/development/secondlife_256.BMP delete mode 100644 indra/newview/icons/development/secondlife_256.png delete mode 100644 indra/newview/icons/development/secondlife_32.png delete mode 100644 indra/newview/icons/development/secondlife_48.png delete mode 100644 indra/newview/icons/development/secondlife_512.png (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index dbd6a60a7c..22bc09d2df 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1319,17 +1319,15 @@ if (WINDOWS) # Replace the icons with the appropriate ones for the channel # ('test' is the default) set(ICON_PATH "test") + set(VIEWER_MACOSX_PHASE "d") string(TOLOWER ${VIEWER_CHANNEL} channel_lower) if(channel_lower MATCHES "^second life release") set(ICON_PATH "release") set(VIEWER_MACOSX_PHASE "f") - elseif(channel_lower MATCHES "^second life beta viewer") + elseif(channel_lower MATCHES "^second life beta") set(ICON_PATH "beta") set(VIEWER_MACOSX_PHASE "b") - elseif(channel_lower MATCHES "^second life development") - set(ICON_PATH "development") - set(VIEWER_MACOSX_PHASE "d") - elseif(channel_lower MATCHES "project") + elseif(channel_lower MATCHES "^second life project") set(ICON_PATH "project") set(VIEWER_MACOSX_PHASE "a") endif() @@ -1785,7 +1783,6 @@ if (WINDOWS) --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} --grid=${GRID} - --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat DEPENDS @@ -1912,7 +1909,6 @@ if (LINUX) --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged --grid=${GRID} --installer_name=${product} - --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS @@ -2029,7 +2025,6 @@ if (DARWIN) --grid=${GRID} --channel=${VIEWER_CHANNEL} --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt - --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched ${SIGNING_SETTING} diff --git a/indra/newview/icons/development/secondlife.icns b/indra/newview/icons/development/secondlife.icns deleted file mode 100644 index 44f63d384c..0000000000 Binary files a/indra/newview/icons/development/secondlife.icns and /dev/null differ diff --git a/indra/newview/icons/development/secondlife.ico b/indra/newview/icons/development/secondlife.ico deleted file mode 100644 index b53f23ae58..0000000000 Binary files a/indra/newview/icons/development/secondlife.ico and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_128.png b/indra/newview/icons/development/secondlife_128.png deleted file mode 100644 index 9b9fe656fc..0000000000 Binary files a/indra/newview/icons/development/secondlife_128.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_16.png b/indra/newview/icons/development/secondlife_16.png deleted file mode 100644 index 91493a033c..0000000000 Binary files a/indra/newview/icons/development/secondlife_16.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_256.BMP b/indra/newview/icons/development/secondlife_256.BMP deleted file mode 100644 index 174b22319a..0000000000 Binary files a/indra/newview/icons/development/secondlife_256.BMP and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_256.png b/indra/newview/icons/development/secondlife_256.png deleted file mode 100644 index 29ed40abdc..0000000000 Binary files a/indra/newview/icons/development/secondlife_256.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_32.png b/indra/newview/icons/development/secondlife_32.png deleted file mode 100644 index 3b84f5ec77..0000000000 Binary files a/indra/newview/icons/development/secondlife_32.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_48.png b/indra/newview/icons/development/secondlife_48.png deleted file mode 100644 index d2636d9d72..0000000000 Binary files a/indra/newview/icons/development/secondlife_48.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_512.png b/indra/newview/icons/development/secondlife_512.png deleted file mode 100644 index 75f9b231f4..0000000000 Binary files a/indra/newview/icons/development/secondlife_512.png and /dev/null differ diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 20f64dbf4b..3897db177f 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -160,14 +160,6 @@ class ViewerManifest(LLManifest): if not self.path2basename(os.path.join(os.pardir, os.pardir), "summary.json"): print "No summary.json file" - def login_channel(self): - """Channel reported for login and upgrade purposes ONLY; - used for A/B testing""" - # NOTE: Do not return the normal channel if login_channel - # is not specified, as some code may branch depending on - # whether or not this is present - return self.args.get('login_channel') - def grid(self): return self.args['grid'] def channel(self): @@ -179,16 +171,23 @@ class ViewerManifest(LLManifest): def channel_lowerword(self): return self.channel_oneword().lower() + def app_name(self): + app_suffix='Test' + channel_type=self.channel_lowerword() + if channel_type == 'release' : + app_suffix='Viewer' + elif re.match('(beta|project) .*',channel_type) : + app_suffix=self.channel_unique() + return "Second Life "+app_suffix + def icon_path(self): icon_path="icons/" channel_type=self.channel_lowerword() - if channel_type == 'release' \ - or channel_type == 'development' \ - : + if channel_type == 'release' : icon_path += channel_type - elif channel_type == 'betaviewer' : + elif re.match('beta .*',channel_type) : icon_path += 'beta' - elif re.match('project.*',channel_type) : + elif re.match('project .*',channel_type) : icon_path += 'project' else : icon_path += 'test' @@ -205,14 +204,6 @@ class ViewerManifest(LLManifest): "--helperuri http://preview-%(grid)s.secondlife.com/helpers/" %\ {'grid':self.grid()} - # set command line flags for channel - channel_flags = '' - if self.login_channel() and self.login_channel() != self.channel(): - # Report a special channel during login, but use default - channel_flags = '--channel "%s"' % (self.login_channel()) - elif not self.default_channel(): - channel_flags = '--channel "%s"' % self.channel() - # Deal with settings setting_flags = '' if not self.default_channel() or not self.default_grid(): @@ -223,7 +214,7 @@ class ViewerManifest(LLManifest): setting_flags = '--settings settings_%s_%s.xml'\ % (self.grid(), self.channel_lowerword()) - return " ".join((channel_flags, grid_flags, setting_flags)).strip() + return " ".join((grid_flags, setting_flags)).strip() def extract_names(self,src): try: @@ -883,10 +874,7 @@ class DarwinManifest(ViewerManifest): # Copy everything in to the mounted .dmg - if self.default_channel() and not self.default_grid(): - app_name = "Second Life " + self.args['grid'] - else: - app_name = channel_standin.strip() + app_name = self.app_name() # Hack: # Because there is no easy way to coerce the Finder into positioning -- cgit v1.2.3 From 6e2e008280c24b9e62a6b0517ee85183fad7807a Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 12 Feb 2013 11:39:46 -0500 Subject: increment viewer version --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 6cb9d3dd0d..d5c0c99142 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.4.3 +3.5.1 -- cgit v1.2.3 From 72b4a1962f9f036d2bd8e0094e999d6750a18eae Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 12 Feb 2013 12:42:14 -0500 Subject: correct dependencies for forcing version number recompilations --- indra/newview/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 22bc09d2df..627842297e 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1227,13 +1227,6 @@ set(viewer_HEADER_FILES source_group("CMake Rules" FILES ViewerInstall.cmake) -set_source_files_properties( - llversioninfo.cpp tests/llversioninfo_test.cpp - PROPERTIES - OBJECT_DEPENDS always_generate_version - COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake - ) - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt COMMAND echo "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt @@ -1242,6 +1235,13 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt add_custom_target(generate_viewer_version DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt") add_dependencies(generate_viewer_version "${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt") +set_source_files_properties( + llversioninfo.cpp tests/llversioninfo_test.cpp + PROPERTIES + OBJECT_DEPENDS generate_viewer_version + COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake + ) + if (DARWIN) LIST(APPEND viewer_SOURCE_FILES llappviewermacosx.cpp) -- cgit v1.2.3 From 44ad4f0ba10a998d0d210c7f4426c7b9a73c24ad Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 12 Feb 2013 16:38:59 -0500 Subject: set default viewer channel only in the cmake file --- indra/newview/llversioninfo.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index a15b280fc0..35d0052bfa 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -29,16 +29,14 @@ #include #include "llversioninfo.h" -#if ! defined(LL_VIEWER_VERSION_MAJOR) \ +#if ! defined(LL_VIEWER_CHANNEL) \ + || ! defined(LL_VIEWER_VERSION_MAJOR) \ || ! defined(LL_VIEWER_VERSION_MINOR) \ || ! defined(LL_VIEWER_VERSION_PATCH) \ || ! defined(LL_VIEWER_VERSION_BUILD) - #error "Version information is undefined" + #error "Channel or Version information is undefined" #endif -#ifndef LL_VIEWER_CHANNEL -#define LL_VIEWER_CHANNEL "Second Life Test" -#endif const char * const LL_CHANNEL = LL_VIEWER_CHANNEL; // -- cgit v1.2.3 From 57f3b0719a452580e78b6583715952a620056a33 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 12 Feb 2013 18:48:02 -0500 Subject: rearrange depends --- indra/newview/CMakeLists.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 627842297e..5d0d8c617a 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1230,15 +1230,14 @@ source_group("CMake Rules" FILES ViewerInstall.cmake) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt COMMAND echo "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt - COMMENT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Generating viewer_version.txt + COMMENT Generating viewer_version.txt for manifest processing ) -add_custom_target(generate_viewer_version DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt") -add_dependencies(generate_viewer_version "${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt") +add_custom_target(generate_viewer_version ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt) set_source_files_properties( llversioninfo.cpp tests/llversioninfo_test.cpp PROPERTIES - OBJECT_DEPENDS generate_viewer_version + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt # dummy dependency to force recompile every time COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake ) -- cgit v1.2.3 From f96e9d67b4eea56b485eb8a6fbf6c70a3f622c8d Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 13 Feb 2013 09:41:17 -0500 Subject: put precompiled headers back in llversioninfo.cpp --- indra/newview/llversioninfo.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview') diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 35d0052bfa..6a8fad0134 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -25,6 +25,7 @@ * $/LicenseInfo$ */ +#include "llviewerprecompiledheaders.h" #include #include #include "llversioninfo.h" -- cgit v1.2.3 From 8556e63796867f1e58a77aeef1c34a6f03ee8962 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 13 Feb 2013 10:51:21 -0500 Subject: correct include path for generated viewerRes.rc --- indra/newview/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 5d0d8c617a..e77d888466 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1398,13 +1398,17 @@ if (WINDOWS) PROPERTIES HEADER_FILE_ONLY TRUE) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/res/viewerRes.rc - ${CMAKE_CURRENT_BINARY_DIR}/res/viewerRes.rc + ${CMAKE_CURRENT_BINARY_DIR}/viewerRes.rc ) set(viewer_RESOURCE_FILES - ${CMAKE_CURRENT_BINARY_DIR}/res/viewerRes.rc + ${CMAKE_CURRENT_BINARY_DIR}/viewerRes.rc ${viewer_RESOURCE_FILES} ) + set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/viewerRes.rc + PROPERTIES COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}/res" + ) + SOURCE_GROUP("Resource Files" FILES ${viewer_RESOURCE_FILES}) if (NOT STANDALONE) -- cgit v1.2.3 From f7160b28e24994b8dcf4c228f49685396184bc75 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 13 Feb 2013 12:18:12 -0500 Subject: correct revision number variable name in viewerRes.rc --- indra/newview/res/viewerRes.rc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index 5360842134..8587243791 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -135,8 +135,8 @@ TOOLNO CURSOR "llno.cur" // VS_VERSION_INFO VERSIONINFO - FILEVERSION ${VIEWER_VERSION_MAJOR},${VIEWER_VERSION_MINOR},${VIEWER_VERSION_PATCH},${VIEWER_VERSION_BUILD} - PRODUCTVERSION ${VIEWER_VERSION_MAJOR},${VIEWER_VERSION_MINOR},${VIEWER_VERSION_PATCH},${VIEWER_VERSION_BUILD} + FILEVERSION ${VIEWER_VERSION_MAJOR},${VIEWER_VERSION_MINOR},${VIEWER_VERSION_PATCH},${VIEWER_VERSION_REVISION} + PRODUCTVERSION ${VIEWER_VERSION_MAJOR},${VIEWER_VERSION_MINOR},${VIEWER_VERSION_PATCH},${VIEWER_VERSION_REVISION} FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -153,12 +153,12 @@ BEGIN BEGIN VALUE "CompanyName", "Linden Lab" VALUE "FileDescription", "Second Life" - VALUE "FileVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_BUILD}" + VALUE "FileVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}" VALUE "InternalName", "Second Life" VALUE "LegalCopyright", "Copyright � 2001, Linden Research, Inc." VALUE "OriginalFilename", "SecondLife.exe" VALUE "ProductName", "Second Life" - VALUE "ProductVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_BUILD}" + VALUE "ProductVersion", "${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}" END END BLOCK "VarFileInfo" -- cgit v1.2.3 From e679b1cdfc288004dcbc59a47a606728b5ad6ff4 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 13 Feb 2013 12:29:28 -0500 Subject: fix unused return from fwrite --- indra/newview/llviewerstatsrecorder.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp index 91e485d01b..321684bf3f 100644 --- a/indra/newview/llviewerstatsrecorder.cpp +++ b/indra/newview/llviewerstatsrecorder.cpp @@ -187,6 +187,7 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << mObjectUpdateFailures << " update failures" << llendl; + U32 data_size; if (mObjectCacheFile == NULL) { mStartTime = LLTimer::getTotalSeconds(); @@ -216,7 +217,11 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "Texture Fetch bps\t" << "\n"; - fwrite(data_msg.str().c_str(), 1, data_msg.str().size(), mObjectCacheFile ); + data_size = data_msg.str().size(); + if (fwrite(data_msg.str().c_str(), 1, data_size, mObjectCacheFile ) != data_size) + { + llwarns << "failed to write full headers to " << STATS_FILE_NAME << llendl; + } } else { @@ -249,7 +254,12 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "\t" << (mTextureFetchSize * 8 / delta_time) << "\n"; - fwrite(data_msg.str().c_str(), 1, data_msg.str().size(), mObjectCacheFile ); + data_size = data_msg.str().size(); + if (fwrite(data_msg.str().c_str(), 1, data_size, mObjectCacheFile ) + { + llwarns << "failed to write full stats to " << STATS_FILE_NAME << llendl; + } + clearStats(); } -- cgit v1.2.3 From 20e64fc6db5de1e025ebd443b54350331b4f14cf Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 13 Feb 2013 13:08:03 -0500 Subject: fix fat-finger fix --- indra/newview/llviewerstatsrecorder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp index 321684bf3f..f9a725547f 100644 --- a/indra/newview/llviewerstatsrecorder.cpp +++ b/indra/newview/llviewerstatsrecorder.cpp @@ -255,7 +255,7 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "\n"; data_size = data_msg.str().size(); - if (fwrite(data_msg.str().c_str(), 1, data_size, mObjectCacheFile ) + if (fwrite(data_msg.str().c_str(), 1, data_size, mObjectCacheFile ) != data_size) { llwarns << "failed to write full stats to " << STATS_FILE_NAME << llendl; } -- cgit v1.2.3 From 365891e0fa480eebdadca4172ae30761bca8a432 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 14 Feb 2013 18:07:23 -0500 Subject: correct windows executable name --- indra/newview/viewer_manifest.py | 44 +++++++--------------------------------- 1 file changed, 7 insertions(+), 37 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 3897db177f..a975a2b32f 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -241,13 +241,13 @@ class ViewerManifest(LLManifest): class WindowsManifest(ViewerManifest): def final_exe(self): - if self.default_channel(): - if self.default_grid(): - return "SecondLife.exe" - else: - return "SecondLifePreview.exe" - else: - return ''.join(self.channel().split()) + '.exe' + app_suffix="Test" + channel_type=self.channel_lowerword() + if channel_type == 'release' : + app_suffix='' + elif re.match('(beta|project) .*',channel_type) : + app_suffix=''.join(self.channel_unique().split()) + return "SecondLife"+app_suffix+".exe" def test_msvcrt_and_copy_action(self, src, dst): # This is used to test a dll manifest. @@ -295,26 +295,9 @@ class WindowsManifest(ViewerManifest): else: print "Doesn't exist:", src - ### DISABLED MANIFEST CHECKING for vs2010. we may need to reenable this - # shortly. If this hasn't been reenabled by the 2.9 viewer release then it - # should be deleted -brad - #def enable_crt_manifest_check(self): - # if self.is_packaging_viewer(): - # WindowsManifest.copy_action = WindowsManifest.test_msvcrt_and_copy_action - - #def enable_no_crt_manifest_check(self): - # if self.is_packaging_viewer(): - # WindowsManifest.copy_action = WindowsManifest.test_for_no_msvcrt_manifest_and_copy_action - - #def disable_manifest_check(self): - # if self.is_packaging_viewer(): - # del WindowsManifest.copy_action - def construct(self): super(WindowsManifest, self).construct() - #self.enable_crt_manifest_check() - if self.is_packaging_viewer(): # Find secondlife-bin.exe in the 'configuration' dir, then rename it to the result of final_exe. self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe()) @@ -324,15 +307,11 @@ class WindowsManifest(ViewerManifest): 'llplugin', 'slplugin', self.args['configuration']), "slplugin.exe") - #self.disable_manifest_check() - self.path2basename("../viewer_components/updater/scripts/windows", "update_install.bat") # Get shared libs from the shared libs staging directory if self.prefix(src=os.path.join(os.pardir, 'sharedlibs', self.args['configuration']), dst=""): - #self.enable_crt_manifest_check() - # Get llcommon and deps. If missing assume static linkage and continue. try: self.path('llcommon.dll') @@ -344,8 +323,6 @@ class WindowsManifest(ViewerManifest): print err.message print "Skipping llcommon.dll (assuming llcommon was linked statically)" - #self.disable_manifest_check() - # Mesh 3rd party libs needed for auto LOD and collada reading try: if self.args['configuration'].lower() == 'debug': @@ -409,8 +386,6 @@ class WindowsManifest(ViewerManifest): self.path("featuretable.txt") self.path("featuretable_xp.txt") - #self.enable_no_crt_manifest_check() - # Media plugins - QuickTime if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"): self.path("media_plugin_quicktime.dll") @@ -490,15 +465,10 @@ class WindowsManifest(ViewerManifest): self.end_prefix() - #self.disable_manifest_check() - # pull in the crash logger and updater from other projects # tag:"crash-logger" here as a cue to the exporter self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'], dst="win_crash_logger.exe") -# For CHOP-397, windows updater no longer used. -# self.path(src='../win_updater/%s/windows-updater.exe' % self.args['configuration'], -# dst="updater.exe") if not self.is_packaging_viewer(): self.package_file = "copied_deps" -- cgit v1.2.3 From 237a48721d9df6a8bbf8a3255bb80f348eb2322e Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 15 Feb 2013 09:29:09 -0500 Subject: clarify windows installer name --- indra/newview/viewer_manifest.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index a975a2b32f..ec5aca533f 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -539,6 +539,7 @@ class WindowsManifest(ViewerManifest): !define VERSION_LONG "%(version)s" !define VERSION_DASHES "%(version_dashes)s" """ % substitution_strings + subchannel_underscores = '_'.join(self.channel_unique().split()) if self.default_channel(): if self.default_grid(): # release viewer @@ -552,7 +553,7 @@ class WindowsManifest(ViewerManifest): Caption "Second Life" """ else: - # beta grid viewer + # alternate grid viewer installer_file = "Second_Life_%(version_dashes)s_(%(grid_caps)s)_Setup.exe" grid_vars_template = """ OutFile "%(installer_file)s" @@ -564,8 +565,8 @@ class WindowsManifest(ViewerManifest): Caption "Second Life %(grid)s ${VERSION}" """ else: - # some other channel on some grid - installer_file = "Second_Life_%(version_dashes)s_%(channel_oneword)s_Setup.exe" + # some other channel (grid name not used) + installer_file = "Second_Life_%(version_dashes)s_%(subchannel_underscores)s_Setup.exe" grid_vars_template = """ OutFile "%(installer_file)s" !define INSTFLAGS "%(flags)s" -- cgit v1.2.3 From 4925c27b0dada2b1939fa8473d6039938cfa15ba Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 15 Feb 2013 10:12:50 -0500 Subject: correct subchannel definition --- indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index ec5aca533f..63db76ff90 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -531,6 +531,7 @@ class WindowsManifest(ViewerManifest): 'channel':self.channel(), 'channel_oneword':self.channel_oneword(), 'channel_unique':self.channel_unique(), + 'subchannel_underscores':'_'.join(self.channel_unique().split()) } version_vars = """ @@ -539,7 +540,6 @@ class WindowsManifest(ViewerManifest): !define VERSION_LONG "%(version)s" !define VERSION_DASHES "%(version_dashes)s" """ % substitution_strings - subchannel_underscores = '_'.join(self.channel_unique().split()) if self.default_channel(): if self.default_grid(): # release viewer -- cgit v1.2.3 From cf40fc0447606fd3b435a32c5dec7b48565cae4c Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 21 Feb 2013 13:22:25 -0500 Subject: add menu bar background colors for new build/channel scheme --- indra/newview/llviewerwindow.cpp | 47 ++++++++++++++++++++++------------ indra/newview/skins/default/colors.xml | 13 +++++++++- 2 files changed, 42 insertions(+), 18 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 48a69129eb..8c72421888 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2235,29 +2235,42 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) // no l10n problem because channel is always an english string std::string channel = LLVersionInfo::getChannel(); - bool isProject = (channel.find("Project") != std::string::npos); + bool isProject = (channel.find("Project") != std::string::npos); // TBD - should be a regex + bool isBeta = (channel.find("Beta") != std::string::npos); // TBD - should be a regex + bool isTest = (channel.find("Test") != std::string::npos); // TBD - should be a regex // god more important than project, proj more important than grid - if(god_mode && LLGridManager::getInstance()->isInProductionGrid()) + if ( god_mode ) { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarGodBgColor" ); - } - else if(god_mode && !LLGridManager::getInstance()->isInProductionGrid()) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionGodBgColor" ); + if ( LLGridManager::getInstance()->isInProductionGrid() ) + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarGodBgColor" ); + } + else + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionGodBgColor" ); + } } - else if (!god_mode && isProject) + else if (isBeta) + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBetaBgColor" ); + } + else if (isProject) { new_bg_color = LLUIColorTable::instance().getColor( "MenuBarProjectBgColor" ); - } - else if(!god_mode && !LLGridManager::getInstance()->isInProductionGrid()) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" ); - } - else - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBgColor" ); - } + } + else if (isTest) + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarTestBgColor" ); + } + else if(!LLGridManager::getInstance()->isInProductionGrid()) + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" ); + } + else + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBgColor" ); + } if(gMenuBarView) { diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 9bf2922033..02e2ad2ff7 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -98,6 +98,9 @@ + @@ -107,6 +110,9 @@ + @@ -823,10 +829,15 @@ + - + -- cgit v1.2.3 From cf1019859def2af4414def7991e95a9020b0688f Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 21 Feb 2013 16:47:52 -0500 Subject: add use of v1.1 update request protocol, with fallback to v1.0 --- indra/newview/CMakeLists.txt | 3 ++ indra/newview/app_settings/settings.xml | 11 +++++ indra/newview/llappviewer.cpp | 20 ++++++-- indra/newview/llhasheduniqueid.cpp | 54 ++++++++++++++++++++++ indra/newview/llhasheduniqueid.h | 34 ++++++++++++++ indra/newview/lllogininstance.cpp | 21 +++------ .../default/xui/en/panel_preferences_setup.xml | 13 ++++++ indra/newview/tests/lllogininstance_test.cpp | 19 ++++++-- 8 files changed, 152 insertions(+), 23 deletions(-) create mode 100644 indra/newview/llhasheduniqueid.cpp create mode 100644 indra/newview/llhasheduniqueid.h (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e77d888466..19470102e3 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -82,6 +82,7 @@ include_directories( ${LIBS_PREBUILD_DIR}/include/hunspell ${OPENAL_LIB_INCLUDE_DIRS} ${LIBS_PREBUILT_DIR}/include/collada/1.4 + ${CMAKE_CURRENT_SOURCE_DIR} ) set(viewer_SOURCE_FILES @@ -278,6 +279,7 @@ set(viewer_SOURCE_FILES llgroupiconctrl.cpp llgrouplist.cpp llgroupmgr.cpp + llhasheduniqueid.cpp llhints.cpp llhomelocationresponder.cpp llhudeffect.cpp @@ -854,6 +856,7 @@ set(viewer_HEADER_FILES llgroupiconctrl.h llgrouplist.h llgroupmgr.h + llhasheduniqueid.h llhints.h llhomelocationresponder.h llhudeffect.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2e91d10cd3..5b73b075a4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12109,6 +12109,17 @@ Value 3 + UpdaterWillingToTest + + Comment + Allow upgrades to release candidate viewers with new features and fixes. + Persist + 1 + Type + Boolean + Value + 1 + UpdaterServiceCheckPeriod Comment diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 468a297c2d..ae593daf08 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2936,16 +2936,28 @@ void LLAppViewer::initUpdater() std::string url = gSavedSettings.getString("UpdaterServiceURL"); std::string channel = LLVersionInfo::getChannel(); std::string version = LLVersionInfo::getVersion(); - std::string protocol_version = gSavedSettings.getString("UpdaterServiceProtocolVersion"); std::string service_path = gSavedSettings.getString("UpdaterServicePath"); U32 check_period = gSavedSettings.getU32("UpdaterServiceCheckPeriod"); + bool willing_to_test = gSavedSettings.getBOOL("UpdaterWillingToTest"); + unsigned char unique_id[MD5HEX_STR_SIZE]; + if ( ! llHashedUniqueID(unique_id) ) + { + if ( willing_to_test ) + { + LL_WARNS("UpdaterService") << "Unable to provide a unique id; overriding willing_to_test by sending testno" << LL_ENDL; + } + willing_to_test = false; + } mUpdater->setAppExitCallback(boost::bind(&LLAppViewer::forceQuit, this)); - mUpdater->initialize(protocol_version, - url, + mUpdater->initialize(url, service_path, channel, - version); + version, + getOSInfo().getOSVersionString(), + unique_id, + willing_to_test + ); mUpdater->setCheckPeriod(check_period); mUpdater->setBandwidthLimit((int)gSavedSettings.getF32("UpdaterMaximumBandwidth") * (1024/8)); gSavedSettings.getControl("UpdaterMaximumBandwidth")->getSignal()-> diff --git a/indra/newview/llhasheduniqueid.cpp b/indra/newview/llhasheduniqueid.cpp new file mode 100644 index 0000000000..5db5d22332 --- /dev/null +++ b/indra/newview/llhasheduniqueid.cpp @@ -0,0 +1,54 @@ +/** + * @file llhasheduniqueid.cpp + * @brief retrieves an obfuscated unique id for the system + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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" +#include "llhasheduniqueid.h" +#include "llviewernetwork.h" +#include "lluuid.h" +#include "llmachineid.h" + +bool llHashedUniqueID(unsigned char id[MD5HEX_STR_SIZE]) +{ + bool idIsUnique = true; + LLMD5 hashed_unique_id; + unsigned char unique_id[MAC_ADDRESS_BYTES]; + if ( LLUUID::getNodeID(unique_id) + || LLMachineID::getUniqueID(unique_id, sizeof(unique_id)) + ) + { + hashed_unique_id.update(unique_id, MAC_ADDRESS_BYTES); + hashed_unique_id.finalize(); + hashed_unique_id.hex_digest((char*)id); + } + else + { + idIsUnique = false; + memcpy(id,"00000000000000000000000000000000", MD5HEX_STR_SIZE); + llwarns << "Failed to get an id; cannot uniquely identify this machine." << llendl; + } + return idIsUnique; +} + diff --git a/indra/newview/llhasheduniqueid.h b/indra/newview/llhasheduniqueid.h new file mode 100644 index 0000000000..8ef706c1f3 --- /dev/null +++ b/indra/newview/llhasheduniqueid.h @@ -0,0 +1,34 @@ +/** + * @file llhasheduniqueid.h + * @brief retrieves obfuscated but unique id for the system + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, 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_LLHASHEDUNIQUEID_H +#define LL_LLHASHEDUNIQUEID_H +#include "llmd5.h" + +/// Get an obfuscated identifier for this system +bool llHashedUniqueID(unsigned char id[MD5HEX_STR_SIZE]); +///< @returns true if the id is considered valid (if false, the id is all zeros) + +#endif // LL_LLHASHEDUNIQUEID_H diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 419641d23c..12796ca262 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -30,7 +30,6 @@ // llcommon #include "llevents.h" -#include "llmd5.h" #include "stringize.h" // llmessage (!) @@ -40,6 +39,7 @@ #include "lllogin.h" // newview +#include "llhasheduniqueid.h" #include "llviewernetwork.h" #include "llviewercontrol.h" #include "llversioninfo.h" @@ -202,7 +202,7 @@ MandatoryUpdateMachine::MandatoryUpdateMachine(LLLoginInstance & loginInstance, void MandatoryUpdateMachine::start(void) { - llinfos << "starting manditory update machine" << llendl; + llinfos << "starting mandatory update machine" << llendl; if(mUpdaterService.isChecking()) { switch(mUpdaterService.getState()) { @@ -579,24 +579,17 @@ void LLLoginInstance::constructAuthParams(LLPointer user_credentia // (re)initialize the request params with creds. LLSD request_params = user_credential->getLoginParams(); - char hashed_unique_id_string[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */ - LLMD5 hashed_unique_id; - unsigned char unique_id[MAC_ADDRESS_BYTES]; - if(LLUUID::getNodeID(unique_id) == 0) { - if(LLMachineID::getUniqueID(unique_id, sizeof(unique_id)) == 0) { - llerrs << "Failed to get an id; cannot uniquely identify this machine." << llendl; - } + unsigned char hashed_unique_id_string[MD5HEX_STR_SIZE]; + if ( ! llHashedUniqueID(hashed_unique_id_string) ) + { + llwarns << "Not providing a unique id in request params" << llendl; } - hashed_unique_id.update(unique_id, MAC_ADDRESS_BYTES); - hashed_unique_id.finalize(); - hashed_unique_id.hex_digest(hashed_unique_id_string); - request_params["start"] = construct_start_string(); request_params["skipoptional"] = mSkipOptionalUpdate; request_params["agree_to_tos"] = false; // Always false here. Set true in request_params["read_critical"] = false; // handleTOSResponse request_params["last_exec_event"] = mLastExecEvent; - request_params["mac"] = hashed_unique_id_string; + request_params["mac"] = (char*)hashed_unique_id_string; request_params["version"] = LLVersionInfo::getChannelAndVersion(); // Includes channel name request_params["channel"] = LLVersionInfo::getChannel(); request_params["id0"] = mSerialNumber; diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 4aeea8823e..2fb6a9fd40 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -232,6 +232,19 @@ name="Install_manual" value="0" /> + Date: Mon, 25 Feb 2013 16:43:46 -0500 Subject: remove update protocol version from settings --- indra/newview/app_settings/settings.xml | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5b73b075a4..45e77aded4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12153,17 +12153,6 @@ Value update - UpdaterServiceProtocolVersion - - Comment - The update protocol version to use. - Persist - 0 - Type - String - Value - v1.0 - UploadBakedTexOld Comment -- cgit v1.2.3 From 13fe905b24546dda39a88466517aa0c6b449fbd8 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 25 Feb 2013 16:44:31 -0500 Subject: disable willing-to-test for Test viewers --- indra/newview/llappviewer.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index ae593daf08..6ec6f5489c 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2938,7 +2938,17 @@ void LLAppViewer::initUpdater() std::string version = LLVersionInfo::getVersion(); std::string service_path = gSavedSettings.getString("UpdaterServicePath"); U32 check_period = gSavedSettings.getU32("UpdaterServiceCheckPeriod"); - bool willing_to_test = gSavedSettings.getBOOL("UpdaterWillingToTest"); + bool willing_to_test; + LL_DEBUGS("UpdaterService") << "channel " << channel << LL_ENDL; + if (channel.find("Test") != std::string::npos) // TBD - should be a regex + { + LL_INFOS("UpdaterService") << "Test build: overriding willing_to_test by sending testno" << LL_ENDL; + willing_to_test = false; + } + else + { + willing_to_test = gSavedSettings.getBOOL("UpdaterWillingToTest"); + } unsigned char unique_id[MD5HEX_STR_SIZE]; if ( ! llHashedUniqueID(unique_id) ) { -- cgit v1.2.3 From 49ed1a4e32013cda716998784338a01b12c663ef Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 27 Feb 2013 17:40:39 -0500 Subject: finish changes to update handling, including notices of channel changes --- indra/newview/llappviewer.cpp | 74 ++++++++++++++++------ indra/newview/lllogininstance.cpp | 28 ++++---- indra/newview/llviewerwindow.cpp | 13 ++-- .../newview/skins/default/xui/en/notifications.xml | 66 ++++++++++++++++++- 4 files changed, 138 insertions(+), 43 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 6ec6f5489c..18314904a7 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -121,6 +121,7 @@ #include #include #include +#include #if LL_WINDOWS @@ -2831,25 +2832,46 @@ namespace { std::string notification_name; void (*apply_callback)(LLSD const &, LLSD const &) = NULL; + /* Build up the notification name... + * it can be any of these, which are included here for the sake of grep: + * RequiredUpdateDownloadedDialog + * RequiredUpdateDownloadedVerboseDialog + * OtherChannelRequiredUpdateDownloadedDialog + * OtherChannelRequiredUpdateDownloadedVerbose + * DownloadBackgroundTip + * DownloadBackgroundDialog + * OtherChannelDownloadBackgroundTip + * OtherChannelDownloadBackgroundDialog + */ + { + LL_DEBUGS("UpdaterService") << "data = "; + std::ostringstream data_dump; + LLSDSerialize::toNotation(data, data_dump); + LL_CONT << data_dump.str() << LL_ENDL; + } + if(data["channel"].asString() != LLVersionInfo::getChannel()) + { + notification_name.append("OtherChannel"); + } if(data["required"].asBoolean()) { if(LLStartUp::getStartupState() <= STATE_LOGIN_WAIT) { // The user never saw the progress bar. apply_callback = &apply_update_ok_callback; - notification_name = "RequiredUpdateDownloadedVerboseDialog"; + notification_name += "RequiredUpdateDownloadedVerboseDialog"; } else if(LLStartUp::getStartupState() < STATE_WORLD_INIT) { // The user is logging in but blocked. apply_callback = &apply_update_ok_callback; - notification_name = "RequiredUpdateDownloadedDialog"; + notification_name += "RequiredUpdateDownloadedDialog"; } else { // The user is already logged in; treat like an optional update. apply_callback = &apply_update_callback; - notification_name = "DownloadBackgroundTip"; + notification_name += "DownloadBackgroundTip"; } } else @@ -2859,36 +2881,47 @@ namespace { { // CHOP-262 we need to use a different notification // method prior to login. - notification_name = "DownloadBackgroundDialog"; + notification_name += "DownloadBackgroundDialog"; } else { - notification_name = "DownloadBackgroundTip"; + notification_name += "DownloadBackgroundTip"; } } LLSD substitutions; substitutions["VERSION"] = data["version"]; - - // truncate version at the rightmost '.' - std::string version_short(data["version"]); - size_t short_length = version_short.rfind('.'); - if (short_length != std::string::npos) + std::string new_channel = data["channel"].asString(); + substitutions["NEW_CHANNEL"] = new_channel; + std::string info_url = data["info_url"].asString(); + if ( !info_url.empty() ) { - version_short.resize(short_length); + substitutions["INFO_URL"] = info_url; } + else + { + LL_WARNS("UpdaterService") << "no info url supplied - defaulting to hard coded release notes pattern" << LL_ENDL; - LLUIString relnotes_url("[RELEASE_NOTES_BASE_URL][CHANNEL_URL]/[VERSION_SHORT]"); - relnotes_url.setArg("[VERSION_SHORT]", version_short); + // truncate version at the rightmost '.' + std::string version_short(data["version"]); + size_t short_length = version_short.rfind('.'); + if (short_length != std::string::npos) + { + version_short.resize(short_length); + } - // *TODO thread the update service's response through to this point - std::string const & channel = LLVersionInfo::getChannel(); - boost::shared_ptr channel_escaped(curl_escape(channel.c_str(), channel.size()), &curl_free); + LLUIString relnotes_url("[RELEASE_NOTES_BASE_URL][CHANNEL_URL]/[VERSION_SHORT]"); + relnotes_url.setArg("[VERSION_SHORT]", version_short); - relnotes_url.setArg("[CHANNEL_URL]", channel_escaped.get()); - relnotes_url.setArg("[RELEASE_NOTES_BASE_URL]", LLTrans::getString("RELEASE_NOTES_BASE_URL")); - substitutions["RELEASE_NOTES_FULL_URL"] = relnotes_url.getString(); + // *TODO thread the update service's response through to this point + std::string const & channel = LLVersionInfo::getChannel(); + boost::shared_ptr channel_escaped(curl_escape(channel.c_str(), channel.size()), &curl_free); + relnotes_url.setArg("[CHANNEL_URL]", channel_escaped.get()); + relnotes_url.setArg("[RELEASE_NOTES_BASE_URL]", LLTrans::getString("RELEASE_NOTES_BASE_URL")); + substitutions["INFO_URL"] = relnotes_url.getString(); + } + LLNotificationsUtil::add(notification_name, substitutions, LLSD(), apply_callback); } @@ -2940,7 +2973,8 @@ void LLAppViewer::initUpdater() U32 check_period = gSavedSettings.getU32("UpdaterServiceCheckPeriod"); bool willing_to_test; LL_DEBUGS("UpdaterService") << "channel " << channel << LL_ENDL; - if (channel.find("Test") != std::string::npos) // TBD - should be a regex + static const boost::regex is_test_channel("\\bTest$"); + if (boost::regex_search(channel, is_test_channel)) { LL_INFOS("UpdaterService") << "Test build: overriding willing_to_test by sending testno" << LL_ENDL; willing_to_test = false; diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 12796ca262..b27a566c23 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -777,20 +777,20 @@ void LLLoginInstance::updateApp(bool mandatory, const std::string& auth_msg) LLSD payload; payload["mandatory"] = mandatory; -/* - We're constructing one of the following 9 strings here: - "DownloadWindowsMandatory" - "DownloadWindowsReleaseForDownload" - "DownloadWindows" - "DownloadMacMandatory" - "DownloadMacReleaseForDownload" - "DownloadMac" - "DownloadLinuxMandatory" - "DownloadLinuxReleaseForDownload" - "DownloadLinux" - - I've called them out explicitly in this comment so that they can be grepped for. - */ + /* + * We're constructing one of the following 9 strings here: + * "DownloadWindowsMandatory" + * "DownloadWindowsReleaseForDownload" + * "DownloadWindows" + * "DownloadMacMandatory" + * "DownloadMacReleaseForDownload" + * "DownloadMac" + * "DownloadLinuxMandatory" + * "DownloadLinuxReleaseForDownload" + * "DownloadLinux" + * + * I've called them out explicitly in this comment so that they can be grepped for. + */ std::string notification_name = "Download"; #if LL_WINDOWS diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 8c72421888..2d9c127b87 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include "llagent.h" #include "llagentcamera.h" @@ -2235,9 +2236,9 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) // no l10n problem because channel is always an english string std::string channel = LLVersionInfo::getChannel(); - bool isProject = (channel.find("Project") != std::string::npos); // TBD - should be a regex - bool isBeta = (channel.find("Beta") != std::string::npos); // TBD - should be a regex - bool isTest = (channel.find("Test") != std::string::npos); // TBD - should be a regex + static const boost::regex is_beta_channel("\\bBeta\\b"); + static const boost::regex is_project_channel("\\bProject\\b"); + static const boost::regex is_test_channel("\\bTest$"); // god more important than project, proj more important than grid if ( god_mode ) @@ -2251,15 +2252,15 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionGodBgColor" ); } } - else if (isBeta) + else if (boost::regex_search(channel, is_beta_channel)) { new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBetaBgColor" ); } - else if (isProject) + else if (boost::regex_search(channel, is_project_channel)) { new_bg_color = LLUIColorTable::instance().getColor( "MenuBarProjectBgColor" ); } - else if (isTest) + else if (boost::regex_search(channel, is_test_channel)) { new_bg_color = LLUIColorTable::instance().getColor( "MenuBarTestBgColor" ); } diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index c8f5cbb2b0..2319729339 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3452,7 +3452,7 @@ or you can install it now. name="DownloadBackgroundTip" type="notify"> We have downloaded an update to your [APP_NAME] installation. -Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +Version [VERSION] [[INFO_URL] Information about this update] confirm We have downloaded an update to your [APP_NAME] installation. -Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +Version [VERSION] [[INFO_URL] Information about this update] confirm We have downloaded a required software update. -Version [VERSION] +Version [VERSION] [[INFO_URL] Information about this update] We must restart [APP_NAME] to install the update. confirm @@ -3492,6 +3492,66 @@ We must restart [APP_NAME] to install the update. name="RequiredUpdateDownloadedDialog" type="alertmodal"> We must restart [APP_NAME] to install the update. +[[INFO_URL] Information about this update] + confirm + + + + +We have downloaded an update to your [APP_NAME] installation. +Version [VERSION] +This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; +see [[INFO_URL] for details about this update] + confirm + + + + +We have downloaded an update to your [APP_NAME] installation. +Version [VERSION] +This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; +see [[INFO_URL] Information about this update] + confirm + + + + +We have downloaded a required software update. +Version [VERSION] +This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; +see [[INFO_URL] Information about this update] + +We must restart [APP_NAME] to install the update. + confirm + + + + +We must restart [APP_NAME] to install the update. +This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; +see [[INFO_URL] Information about this update] confirm Date: Thu, 28 Feb 2013 13:45:49 -0500 Subject: correct icon and app name recognition by channel --- indra/newview/viewer_manifest.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 63db76ff90..b3c0e650ec 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -176,18 +176,19 @@ class ViewerManifest(LLManifest): channel_type=self.channel_lowerword() if channel_type == 'release' : app_suffix='Viewer' - elif re.match('(beta|project) .*',channel_type) : + elif re.match('^(beta|project).*',channel_type) : app_suffix=self.channel_unique() return "Second Life "+app_suffix def icon_path(self): icon_path="icons/" channel_type=self.channel_lowerword() + print "Icon channel type '%s'" % channel_type if channel_type == 'release' : icon_path += channel_type - elif re.match('beta .*',channel_type) : + elif re.match('^beta.*',channel_type) : icon_path += 'beta' - elif re.match('project .*',channel_type) : + elif re.match('^project.*',channel_type) : icon_path += 'project' else : icon_path += 'test' @@ -245,7 +246,7 @@ class WindowsManifest(ViewerManifest): channel_type=self.channel_lowerword() if channel_type == 'release' : app_suffix='' - elif re.match('(beta|project) .*',channel_type) : + elif re.match('^(beta|project).*',channel_type) : app_suffix=''.join(self.channel_unique().split()) return "SecondLife"+app_suffix+".exe" -- cgit v1.2.3 From 2d7e7e8e05c6c0c31b34d44df911a1a3b636ff4a Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 4 Mar 2013 13:38:40 -0500 Subject: force update of version number so that all packaging gets the correct number --- indra/newview/CMakeLists.txt | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 19470102e3..6ff05f0532 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1230,17 +1230,15 @@ set(viewer_HEADER_FILES source_group("CMake Rules" FILES ViewerInstall.cmake) -add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VIEWER_VERSION.txt - COMMAND echo "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt - COMMENT Generating viewer_version.txt for manifest processing - ) -add_custom_target(generate_viewer_version ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt) +add_custom_target(generate_viewer_version ALL + COMMAND echo "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + COMMENT Generating viewer_version.txt for manifest processing + ) set_source_files_properties( llversioninfo.cpp tests/llversioninfo_test.cpp PROPERTIES - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt # dummy dependency to force recompile every time + DEPENDS generate_viewer_version # dummy dependency to force recompile every time COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake ) @@ -1726,7 +1724,7 @@ if (WINDOWS) --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/copy_touched.bat DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py - ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + generate_viewer_version stage_third_party_libs ${COPY_INPUT_DEPENDENCIES} COMMENT "Performing viewer_manifest copy" @@ -1919,7 +1917,7 @@ if (LINUX) --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py - ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + generate_viewer_version ${COPY_INPUT_DEPENDENCIES} ) @@ -1944,7 +1942,7 @@ if (LINUX) --source=${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py - ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + generate_viewer_version ${COPY_INPUT_DEPENDENCIES} COMMENT "Performing viewer_manifest copy" ) @@ -2002,7 +2000,7 @@ if (DARWIN) DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py - ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + generate_viewer_version ) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-updater mac-crash-logger) @@ -2036,7 +2034,7 @@ if (DARWIN) ${SIGNING_SETTING} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py - ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt + generate_viewer_version ) endif (PACKAGE) endif (DARWIN) -- cgit v1.2.3 From 8a0363c3c70e6444a56fc7cbf1a1504371143e14 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 5 Mar 2013 16:44:58 -0500 Subject: correct Mac bundle identifier --- indra/newview/CMakeLists.txt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 6ff05f0532..002c826a30 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1966,7 +1966,7 @@ if (DARWIN) OUTPUT_NAME "${product}" MACOSX_BUNDLE_INFO_STRING "Second Life Viewer" MACOSX_BUNDLE_ICON_FILE "secondlife.icns" - MACOSX_BUNDLE_GUI_IDENTIFIER "Second Life" + MACOSX_BUNDLE_GUI_IDENTIFIER "com.secondlife.indra.viewer" MACOSX_BUNDLE_LONG_VERSION_STRING "${VIEWER_CHANNEL} ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" MACOSX_BUNDLE_BUNDLE_NAME "Second Life" MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}" @@ -1978,10 +1978,7 @@ if (DARWIN) "${CMAKE_CURRENT_SOURCE_DIR}/Info-SecondLife.plist" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app/Contents/Info.plist" ) - #configure_file( - # "${CMAKE_CURRENT_SOURCE_DIR}/English.lproj/InfoPlist.strings" - # "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app/Contents/Resources/English.lproj/InfoPlist.strings" - # ) + add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${PYTHON_EXECUTABLE} -- cgit v1.2.3 From e68ab0a563061d3d65a3f552a1f5856071bd230e Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 27 Mar 2013 13:18:52 -0400 Subject: add info logging of system id --- indra/newview/llhasheduniqueid.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llhasheduniqueid.cpp b/indra/newview/llhasheduniqueid.cpp index 5db5d22332..03192d3e61 100644 --- a/indra/newview/llhasheduniqueid.cpp +++ b/indra/newview/llhasheduniqueid.cpp @@ -42,12 +42,13 @@ bool llHashedUniqueID(unsigned char id[MD5HEX_STR_SIZE]) hashed_unique_id.update(unique_id, MAC_ADDRESS_BYTES); hashed_unique_id.finalize(); hashed_unique_id.hex_digest((char*)id); + LL_INFOS_ONCE("AppInit") << "System ID " << id << LL_ENDL; } else { idIsUnique = false; memcpy(id,"00000000000000000000000000000000", MD5HEX_STR_SIZE); - llwarns << "Failed to get an id; cannot uniquely identify this machine." << llendl; + LL_WARNS_ONCE("AppInit") << "Failed to get an id; cannot uniquely identify this machine." << LL_ENDL; } return idIsUnique; } -- cgit v1.2.3 From c17db85e73a91c145d6eebe36b3b05e2289deae0 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 27 Mar 2013 13:20:48 -0400 Subject: add platform and platform version to login request parameters for new version manager query --- indra/newview/llappviewer.cpp | 29 +++++++++++++++++----------- indra/newview/llappviewer.h | 2 ++ indra/newview/lllogininstance.cpp | 9 +++++++++ indra/newview/lllogininstance.h | 3 +++ indra/newview/tests/lllogininstance_test.cpp | 4 +++- 5 files changed, 35 insertions(+), 12 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 742c29cc88..47a0cb02e4 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -271,6 +271,19 @@ BOOL gUseQuickTime = TRUE; eLastExecEvent gLastExecEvent = LAST_EXEC_NORMAL; +#if LL_WINDOWS +# define LL_PLATFORM_KEY "win" +#elif LL_DARWIN +# define LL_PLATFORM_KEY "mac" +#elif LL_LINUX +# define LL_PLATFORM_KEY "lnx" +#elif LL_SOLARIS +# define LL_PLATFORM_KEY "sol" +#else +# error "Unknown Platform" +#endif +const char* gPlatform = LL_PLATFORM_KEY; + LLSD gDebugInfo; U32 gFrameCount = 0; @@ -669,6 +682,7 @@ LLAppViewer::LLAppViewer() : gLoggedInTime.stop(); LLLoginInstance::instance().setUpdaterService(mUpdater.get()); + LLLoginInstance::instance().setPlatformInfo(gPlatform, getOSInfo().getOSVersionString()); } LLAppViewer::~LLAppViewer() @@ -3014,6 +3028,7 @@ void LLAppViewer::initUpdater() service_path, channel, version, + gPlatform, getOSInfo().getOSVersionString(), unique_id, willing_to_test @@ -5189,17 +5204,9 @@ void LLAppViewer::handleLoginComplete() void LLAppViewer::launchUpdater() { - LLSD query_map = LLSD::emptyMap(); - // *TODO place os string in a global constant -#if LL_WINDOWS - query_map["os"] = "win"; -#elif LL_DARWIN - query_map["os"] = "mac"; -#elif LL_LINUX - query_map["os"] = "lnx"; -#elif LL_SOLARIS - query_map["os"] = "sol"; -#endif + LLSD query_map = LLSD::emptyMap(); + query_map["os"] = gPlatform; + // *TODO change userserver to be grid on both viewer and sim, since // userserver no longer exists. query_map["userserver"] = LLGridManager::getInstance()->getGridId(); diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 7563d672e3..69056074e9 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -322,6 +322,8 @@ typedef enum extern eLastExecEvent gLastExecEvent; // llstartup +extern const char* gPlatform; + extern U32 gFrameCount; extern U32 gForegroundFrameCount; diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index b27a566c23..a9b7342963 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -488,6 +488,13 @@ LLLoginInstance::LLLoginInstance() : mDispatcher.add("indeterminate", "", boost::bind(&LLLoginInstance::handleIndeterminate, this, _1)); } +void LLLoginInstance::setPlatformInfo(const std::string platform, + const std::string platform_version) +{ + mPlatform = platform; + mPlatformVersion = platform_version; +} + LLLoginInstance::~LLLoginInstance() { } @@ -592,6 +599,8 @@ void LLLoginInstance::constructAuthParams(LLPointer user_credentia request_params["mac"] = (char*)hashed_unique_id_string; request_params["version"] = LLVersionInfo::getChannelAndVersion(); // Includes channel name request_params["channel"] = LLVersionInfo::getChannel(); + request_params["platform"] = mPlatform; + request_params["platform_version"] = mPlatformVersion; request_params["id0"] = mSerialNumber; request_params["host_id"] = gSavedSettings.getString("HostID"); request_params["extended_errors"] = true; // request message_id and message_args diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h index 8b53431219..83191e50bd 100644 --- a/indra/newview/lllogininstance.h +++ b/indra/newview/lllogininstance.h @@ -66,6 +66,7 @@ public: void setSkipOptionalUpdate(bool state) { mSkipOptionalUpdate = state; } void setSerialNumber(const std::string& sn) { mSerialNumber = sn; } void setLastExecEvent(int lee) { mLastExecEvent = lee; } + void setPlatformInfo(const std::string platform, const std::string platform_version); void setNotificationsInterface(LLNotificationsInterface* ni) { mNotifications = ni; } @@ -99,6 +100,8 @@ private: F64 mTransferRate; std::string mSerialNumber; int mLastExecEvent; + std::string mPlatform; + std::string mPlatformVersion; UpdaterLauncherCallback mUpdaterLauncher; LLEventDispatcher mDispatcher; LLUpdaterService * mUpdaterService; diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index a86230488b..faf46f0984 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -73,7 +73,7 @@ void LLViewerWindow::setShowProgress(BOOL show) {} LLProgressView * LLViewerWindow::getProgressView(void) const { return 0; } LLViewerWindow* gViewerWindow; - + class LLLogin::Impl { }; @@ -212,6 +212,7 @@ void LLUpdaterService::initialize(const std::string& url, const std::string& path, const std::string& channel, const std::string& version, + const std::string& platform, const std::string& platform_version, const unsigned char uniqueid[MD5HEX_STR_SIZE], const bool& willing_to_test @@ -369,6 +370,7 @@ namespace tut accountCredential->setCredentialData(identifier, authenticator); logininstance->setNotificationsInterface(¬ifications); + logininstance->setPlatformInfo("win", "1.3.5"); } LLLoginInstance* logininstance; -- cgit v1.2.3 From f9ef7ba13a3ee008cb958c2852dff6c8f1073ee0 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 27 Mar 2013 15:06:25 -0400 Subject: change login to pass only the version instead of channel+version in the version parameter (channel is passed separately) --- indra/newview/lllogininstance.cpp | 2 +- indra/newview/tests/lllogininstance_test.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index a9b7342963..71c07d6381 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -597,7 +597,7 @@ void LLLoginInstance::constructAuthParams(LLPointer user_credentia request_params["read_critical"] = false; // handleTOSResponse request_params["last_exec_event"] = mLastExecEvent; request_params["mac"] = (char*)hashed_unique_id_string; - request_params["version"] = LLVersionInfo::getChannelAndVersion(); // Includes channel name + request_params["version"] = LLVersionInfo::getVersion(); request_params["channel"] = LLVersionInfo::getChannel(); request_params["platform"] = mPlatform; request_params["platform_version"] = mPlatformVersion; diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index faf46f0984..f038112fd0 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -50,7 +50,7 @@ const std::string VIEWERLOGIN_GRIDLABEL("viewerlogin_grid"); const std::string APPVIEWER_SERIALNUMBER("appviewer_serialno"); const std::string VIEWERLOGIN_CHANNEL("invalid_channel"); -const std::string VIEWERLOGIN_VERSION_CHANNEL("invalid_version"); +const std::string VIEWERLOGIN_VERSION("invalid_version"); // Link seams. @@ -183,7 +183,7 @@ void LLUIColorTable::saveUserSettings(void)const {} //----------------------------------------------------------------------------- #include "../llversioninfo.h" -const std::string &LLVersionInfo::getChannelAndVersion() { return VIEWERLOGIN_VERSION_CHANNEL; } +const std::string &LLVersionInfo::getVersion() { return VIEWERLOGIN_VERSION; } const std::string &LLVersionInfo::getChannel() { return VIEWERLOGIN_CHANNEL; } //----------------------------------------------------------------------------- -- cgit v1.2.3 From 060a76daa695e8619db48bf940ea3997668702d0 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 31 Oct 2012 21:22:52 -0400 Subject: storm-1850: ensure that last exec event reports apply only to the same version --- indra/newview/llappviewer.cpp | 165 ++++++++++++++++++++++++++++++++---------- indra/newview/llappviewer.h | 6 +- 2 files changed, 129 insertions(+), 42 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 47a0cb02e4..e3a2fae7ef 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -338,7 +338,7 @@ BOOL gLogoutInProgress = FALSE; //////////////////////////////////////////////////////////// // Internal globals... that should be removed. static std::string gArgs; - +const int MAX_MARKER_LENGTH = 1024; const std::string MARKER_FILE_NAME("SecondLife.exec_marker"); const std::string ERROR_MARKER_FILE_NAME("SecondLife.error_marker"); const std::string LLERROR_MARKER_FILE_NAME("SecondLife.llerror_marker"); @@ -652,7 +652,7 @@ LLTextureFetch* LLAppViewer::sTextureFetch = NULL; LLAppViewer::LLAppViewer() : mMarkerFile(), - mLogoutMarkerFile(NULL), + mLogoutMarkerFile(), mReportedCrash(false), mNumSessions(0), mPurgeCache(false), @@ -3290,8 +3290,8 @@ void LLAppViewer::writeSystemInfo() } // Dump some debugging info - LL_INFOS("SystemInfo") << LLTrans::getString("APP_NAME") - << " version " << LLVersionInfo::getShortVersion() << LL_ENDL; + LL_INFOS("SystemInfo") << "Application: " << LLTrans::getString("APP_NAME") << LL_ENDL; + LL_INFOS("SystemInfo") << "Version: " << LLVersionInfo::getChannelAndVersion() << LL_ENDL; // Dump the local time and time zone time_t now; @@ -3417,22 +3417,27 @@ void LLAppViewer::handleViewerCrash() //we're already in a crash situation if (gDirUtilp) { - std::string crash_file_name; - if(gLLErrorActivated) crash_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,LLERROR_MARKER_FILE_NAME); - else crash_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,ERROR_MARKER_FILE_NAME); - llinfos << "Creating crash marker file " << crash_file_name << llendl; + std::string crash_file_name = ( gLLErrorActivated ) + ? gDirUtilp->getExpandedFilename(LL_PATH_LOGS,LLERROR_MARKER_FILE_NAME) + : gDirUtilp->getExpandedFilename(LL_PATH_LOGS,ERROR_MARKER_FILE_NAME); + LL_INFOS("MarkerFile") << "Creating crash marker file " << crash_file_name << LL_ENDL; LLAPRFile crash_file ; crash_file.open(crash_file_name, LL_APR_W); if (crash_file.getFileHandle()) { LL_INFOS("MarkerFile") << "Created crash marker file " << crash_file_name << LL_ENDL; + recordMarkerVersion(crash_file); } else { LL_WARNS("MarkerFile") << "Cannot create error marker file " << crash_file_name << LL_ENDL; } } + else + { + LL_WARNS("MarkerFile") << "No gDirUtilp with which to create error marker file name" << LL_ENDL; + } if (gMessageSystem && gDirUtilp) { @@ -3484,7 +3489,7 @@ bool LLAppViewer::anotherInstanceRunning() // If the file is currently locked, that means another process is already running. std::string marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, MARKER_FILE_NAME); - LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL; + LL_DEBUGS("MarkerFile") << "Checking marker file '"<< marker_file << "' for lock..." << LL_ENDL; //Freeze case checks if (LLAPRFile::isExist(marker_file, NULL, LL_APR_RB)) @@ -3510,6 +3515,46 @@ bool LLAppViewer::anotherInstanceRunning() return false; } +// static +void LLAppViewer::recordMarkerVersion(LLAPRFile& marker_file) +{ + std::string marker_version(LLVersionInfo::getChannelAndVersion()); + if ( marker_version.length() > MAX_MARKER_LENGTH ) + { + LL_WARNS_ONCE("MarkerFile") << "Version length ("<< marker_version.length()<< ") greater than maximum: marker matching may be incorrect" << LL_ENDL; + } + + // record the viewer version in the marker file + marker_file.write(marker_version.data(), marker_version.length()); +} + +bool LLAppViewer::markerIsSameVersion(const std::string& marker_name) const +{ + bool sameVersion = false; + + std::string my_version(LLVersionInfo::getChannelAndVersion()); + char marker_version[MAX_MARKER_LENGTH]; + S32 marker_version_length; + + LLAPRFile marker_file; + marker_file.open(marker_name, LL_APR_RB); + if (marker_file.getFileHandle()) + { + marker_version_length = marker_file.read(marker_version, sizeof(marker_version)); + LL_DEBUGS("MarkerFile") << "Compare markers: "; + std::string marker_string(marker_version, marker_version_length); + LL_CONT << "\n mine '" << my_version << "'" + << "\n marker '" << marker_string << "'" + << LL_ENDL; + if ( 0 == my_version.compare( 0, my_version.length(), marker_version, 0, marker_version_length ) ) + { + sameVersion = true; + } + marker_file.close(); + } + return sameVersion; +} + void LLAppViewer::initMarkerFile() { //First, check for the existence of other files. @@ -3532,27 +3577,55 @@ void LLAppViewer::initMarkerFile() if (LLAPRFile::isExist(mMarkerFileName, NULL, LL_APR_RB) && !anotherInstanceRunning()) { - gLastExecEvent = LAST_EXEC_FROZE; - LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL; + if ( markerIsSameVersion(mMarkerFileName) ) + { + LL_INFOS("MarkerFile") << "Exec marker '"<< mMarkerFileName << "' found" << LL_ENDL; + gLastExecEvent = LAST_EXEC_FROZE; + } + else + { + LL_INFOS("MarkerFile") << "Exec marker '"<< mMarkerFileName << "' found, but versions did not match" << LL_ENDL; + } } if(LLAPRFile::isExist(logout_marker_file, NULL, LL_APR_RB)) { - gLastExecEvent = LAST_EXEC_LOGOUT_FROZE; - LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL; + if (markerIsSameVersion(logout_marker_file)) + { + gLastExecEvent = LAST_EXEC_LOGOUT_FROZE; + LL_INFOS("MarkerFile") << "Logout crashed '"<< logout_marker_file << "', setting LastExecEvent to " << gLastExecEvent << LL_ENDL; + } + else + { + LL_INFOS("MarkerFile") << "Logout crash marker '"<< logout_marker_file << "' found, but versions did not match" << LL_ENDL; + } LLAPRFile::remove(logout_marker_file); } if(LLAPRFile::isExist(llerror_marker_file, NULL, LL_APR_RB)) { - if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH; - else gLastExecEvent = LAST_EXEC_LLERROR_CRASH; - LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL; + if (markerIsSameVersion(llerror_marker_file)) + { + gLastExecEvent = ( gLastExecEvent == LAST_EXEC_LOGOUT_FROZE ) + ? LAST_EXEC_LOGOUT_CRASH : LAST_EXEC_LLERROR_CRASH; + LL_INFOS("MarkerFile") << "Last exec LLError '"<< llerror_marker_file << "' crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL; + } + else + { + LL_INFOS("MarkerFile") << "Last exec LLError marker '"<< llerror_marker_file << "' found, but versions did not match" << LL_ENDL; + } LLAPRFile::remove(llerror_marker_file); } if(LLAPRFile::isExist(error_marker_file, NULL, LL_APR_RB)) { - if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH; - else gLastExecEvent = LAST_EXEC_OTHER_CRASH; - LL_INFOS("MarkerFile") << "Last exec crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL; + if (markerIsSameVersion(error_marker_file)) + { + gLastExecEvent = (gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) + ? LAST_EXEC_LOGOUT_CRASH : LAST_EXEC_OTHER_CRASH; + LL_INFOS("MarkerFile") << "Last exec '"<< error_marker_file << "' crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL; + } + else + { + LL_INFOS("MarkerFile") << "Last exec '"<< error_marker_file << "' marker found, but versions did not match" << LL_ENDL; + } LLAPRFile::remove(error_marker_file); } @@ -3568,35 +3641,48 @@ void LLAppViewer::initMarkerFile() if (s == APR_SUCCESS && mMarkerFile.getFileHandle()) { - LL_DEBUGS("MarkerFile") << "Marker file created." << LL_ENDL; + LL_DEBUGS("MarkerFile") << "Marker file '"<< mMarkerFileName << "' created." << LL_ENDL; + if (APR_SUCCESS == apr_file_lock(mMarkerFile.getFileHandle(), APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE)) + { + recordMarkerVersion(mMarkerFile); + LL_DEBUGS("MarkerFile") << "Marker file locked." << LL_ENDL; + } + else + { + LL_INFOS("MarkerFile") << "Marker file cannot be locked." << LL_ENDL; + } } else { - LL_INFOS("MarkerFile") << "Failed to create marker file." << LL_ENDL; - return; - } - if (apr_file_lock(mMarkerFile.getFileHandle(), APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE) != APR_SUCCESS) - { - mMarkerFile.close() ; - LL_INFOS("MarkerFile") << "Marker file cannot be locked." << LL_ENDL; - return; + LL_INFOS("MarkerFile") << "Failed to create marker file '"<< mMarkerFileName << "'." << LL_ENDL; } - - LL_DEBUGS("MarkerFile") << "Marker file locked." << LL_ENDL; } void LLAppViewer::removeMarkerFile(bool leave_logout_marker) { - LL_DEBUGS("MarkerFile") << "removeMarkerFile()" << LL_ENDL; + LL_DEBUGS("MarkerFile") << "removeMarkerFile("<getExpandedFilename(LL_PATH_LOGS,LOGOUT_MARKER_FILE_NAME); LLAPRFile outfile ; - outfile.open(mLogoutMarkerFileName, LL_APR_W); - mLogoutMarkerFile = outfile.getFileHandle() ; - if (mLogoutMarkerFile) + mLogoutMarkerFile.open(mLogoutMarkerFileName, LL_APR_W); + if (mLogoutMarkerFile.getFileHandle()) { - llinfos << "Created logout marker file " << mLogoutMarkerFileName << llendl; - apr_file_close(mLogoutMarkerFile); + LL_INFOS("MarkerFile") << "Created logout marker file '"<< mLogoutMarkerFileName << "' " << mLogoutMarkerFileName << LL_ENDL; + recordMarkerVersion(outfile); } else { - llwarns << "Cannot create logout marker file " << mLogoutMarkerFileName << llendl; + LL_WARNS("MarkerFile") << "Cannot create logout marker file " << mLogoutMarkerFileName << LL_ENDL; } } } diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 69056074e9..c8fb023150 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -217,7 +217,9 @@ private: bool anotherInstanceRunning(); void initMarkerFile(); - + static void recordMarkerVersion(LLAPRFile& marker_file); + bool markerIsSameVersion(const std::string& marker_name) const; + void idle(); void idleShutdown(); // update avatar SLID and display name caches @@ -237,7 +239,7 @@ private: LLAPRFile mMarkerFile; // A file created to indicate the app is running. std::string mLogoutMarkerFileName; - apr_file_t* mLogoutMarkerFile; // A file created to indicate the app is running. + LLAPRFile mLogoutMarkerFile; // A file created to indicate the app is running. LLOSInfo mSysOSInfo; -- cgit v1.2.3 From 4b36a56110b3af7fbc8d3a07d9bbfbb9c2a83ae9 Mon Sep 17 00:00:00 2001 From: eli Date: Mon, 14 Jan 2013 17:33:45 -0800 Subject: sync with viewer-development --- .../skins/default/xui/en/floater_my_inventory.xml | 2 +- .../newview/skins/default/xui/en/floater_tools.xml | 2 +- .../skins/default/xui/en/floater_ui_preview.xml | 2 +- .../skins/default/xui/en/menu_inventory_add.xml | 2 +- .../skins/default/xui/en/menu_outfit_gear.xml | 14 + indra/newview/skins/default/xui/en/menu_viewer.xml | 79 +- .../newview/skins/default/xui/en/notifications.xml | 3426 +++++++++++++++++++- .../skins/default/xui/en/panel_group_roles.xml | 2 +- .../xui/en/panel_media_settings_general.xml | 2 +- .../skins/default/xui/en/panel_script_ed.xml | 1 + .../skins/default/xui/en/sidepanel_task_info.xml | 4 + indra/newview/skins/default/xui/en/strings.xml | 4 +- 12 files changed, 3504 insertions(+), 36 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml index ea44fd493e..178987962b 100644 --- a/indra/newview/skins/default/xui/en/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml @@ -6,7 +6,7 @@ height="570" help_topic="sidebar_inventory" min_width="333" - min_height="560" + min_height="570" name="floater_my_inventory" save_rect="true" save_visibility="true" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 5204efbf65..436e9f8fed 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2994,7 +2994,7 @@ even though the user gets a free copy. use_ellipses="true" read_only="true" name="media_info" - width="280" /> + width="180" /> + + + + + + - - + - - + - + - - + - + - + @@ -875,14 +884,6 @@ - - - - @@ -3185,6 +3186,40 @@ parameter="AllowSelectAvatar" /> + + + + + + + + + + + + + + + @@ -3201,16 +3236,6 @@ function="Advanced.ToggleAnimationInfo" parameter="" /> - - - - diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 9dae77a304..44c18c2cce 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1291,6 +1291,45 @@ Visit [_URL] for more information? fail + + There is likely a newer driver for your graphics chip. Updating graphics drivers can substantially improve performance. + + Visit [_URL] to check for driver updates? + confirm + + http://support.amd.com/us/Pages/AMDSupportHub.aspx + + + fail + + + + There is likely a newer driver for your graphics chip. Updating graphics drivers can substantially improve performance. + + Visit [_URL] to check for driver updates? + confirm + + http://www.nvidia.com/Download/index.aspx?lang=en-us + + + fail + + + Warning: The object '<nolink>[OBJECTNAME]</nolink>' wants total access to your Linden Dollars account. If you allow access, it can remove funds from your account at any time, or empty your account completely, on an ongoing basis with no additional warnings. -It is rare that such a request is legitimate. Do not allow access if you do not fully understand why it wants access to your account. +Do not allow access if you do not fully understand why it wants access to your account. confirm
@@ -8252,4 +8291,3389 @@ Attempt cancelled. yestext="Yes"/> + + + fail +[AV_FREEZER] has frozen you. You cannot move or interact with the world. + + + + fail +[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world. + + + + fail +Avatar frozen. + + + + fail +[AV_FREEZER] has unfrozen you. + + + + fail +Avatar unfrozen. + + + + fail +Freeze failed because you don't have admin permission for that parcel. + + + + fail +Your freeze expired, go about your business. + + + + fail +Sorry, can't freeze that user. + + + + fail +You are now the owner of object [OBJECT_NAME] + + + + fail +Can't rez object at [OBJECT_POS] because the owner of this land does not allow it. Use the land tool to see land ownership. + + + + fail +Object can not be rezzed because there are too many requests. + + + + fail +You cannot sit because you cannot move at this time. + + + + fail +You cannot sit because you are not allowed on that land. + + + + fail +Try moving closer. Can't sit on object because +it is not in the same region as you. + + + + fail +Unable to create new object. The region is full. + + + + fail +Failed to place object at specified location. Please try again. + + + + fail +You Can't create trees and grass on land you don't own. + + + + fail +Copy failed because you lack permission to copy the object '[OBJ_NAME]'. + + + + fail +Copy failed because the object '[OBJ_NAME]' cannot be transferred to you. + + + + fail +Copy failed because the object '[OBJ_NAME]' contributes to navmesh. + + + + fail +Duplicate with no root objects selected. + + + + fail +Can't duplicate objects because the region is full. + + + + fail +Can't duplicate objects - Can't find the parcel they are on. + + + + fail +Can't create object because +the parcel is full. + + + + fail +Attempt to rez an object failed. + + + + fail +Unable to create item that has caused problems on this region. + + + + fail +That inventory item has been blacklisted. + + + + fail +You are not currently allowed to create objects. + + + + fail +Land Search Blocked. +You have performed too many land searches too quickly. +Please try again in a minute. + + + + fail +Not enough script resources available to attach object! + + + + fail +You died and have been teleported to your home location + + + + fail +You are no longer allowed here and have [EJECT_TIME] seconds to leave. + + + + fail +You can't enter this region because +the server is full. + + + + fail +Save Back To Inventory has been disabled. + + + + fail +Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists. + + + + fail +Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'. + + + + fail +Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled. + + + + fail +You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'. + + + + fail +You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. + + + + fail +You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. + + + + fail +Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system. + + + + fail +Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'. + + + + fail +Cannot save your selection because the object '[OBJ_NAME]' is not copyable. + + + + fail +You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'. + + + + fail +Internal Error: Unknown destination type. + + + + fail +Delete failed because object not found + + + + fail +Sorry, can't eject that user. + + + + fail +This region does not allow you to set your home location here. + + + + fail +You can only set your 'Home Location' on your land or at a mainland Infohub. + + + + fail +Home position set. + + + + fail +Avatar ejected. + + + + fail +Eject failed because you don't have admin permission for that parcel. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because the parcel is full. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE]) + + + + fail +You don't have permission to modify that object + + + + fail +Can't enable physics for an object that contributes to the navmesh. + + + + fail +Can't enable physics for keyframed objects. + + + + fail +Can't enable physics for object -- insufficient land resources. + + + + fail +Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] + + + + fail +This object cannot have a concave piece because it is phantom and contributes to the navmesh. + + + + fail +Unable to add item! + + + + fail +Unable to edit this! + + + + fail +Not permitted to edit this. + + + + fail +Not permitted to copy that inventory. + + + + fail +Cannot save to object contents: Item no longer exists. + + + + fail +Cannot save to object contents: Item with that name already exists in inventory + + + + fail +Cannot save to object contents: This would modify the attachment permissions. + + + + fail +Not permitted to edit this! + + + + fail +Too many scripts. + + + + fail +Unable to add script! + + + + fail +Asset server didn't respond in a timely fashion. Object returned to sim. + + + + fail +This region does not have physics shapes enabled. + + + + fail +You cannot modify the navmesh across region boundaries. + + + + fail +You don't have permission to modify that object. + + + + fail +Can't enable physics for an object that contributes to the navmesh. + + + + fail +Can't enable physics for keyframed objects. + + + + fail +Can't enable physics for object -- insufficient land resources. + + + + fail +Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] + + + + fail +Cannot set physics properties on that object type. + + + + fail +Cannot set root prim to have no shape. + + + + fail +This region does not have physics materials enabled. + + + + fail +Only root prims may have their physics materials adjusted. + + + + fail +Setting physics materials on characters is not yet supported. + + + + fail +One or more of the specified physics material properties was invalid. + + + + fail +You may not alter the stitching type of a mesh object. + + + + fail +You may not alter the shape of a mesh object + + + + fail +You can't enter this region because \nthe region is full. + + + + fail +Link failed -- owners differ + + + + fail +Link failed -- cannot modify the navmesh across region boundaries. + + + + fail +Link failed because you do not have edit permission. + + + + fail +Link failed -- too many primitives + + + + fail +Link failed -- cannot link no-copy with no-transfer + + + + fail +Link failed -- nothing linkable. + + + + fail +Link failed -- too many pathfinding characters + + + + fail +Link failed -- insufficient land resources + + + + fail +Object uses too many physics resources -- its dynamics have been disabled. + + + + fail +You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' + + + + fail +You have been teleported home by the object '[OBJECT_NAME]' + + + + fail +You have been teleported by an attachment on [ITEM_ID] + + + + fail +You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' + + + + fail +You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID] + + + + fail +You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user. + + + + fail +Unable to create requested object. The region is full. + + + + fail +You can't attach multiple objects to one spot. + + + + fail +You can't create multiple objects here. + + + + fail +Unable to create requested object. Object is missing from database. + + + + fail +Unable to create requested object. The request timed out. Please try again. + + + + fail +Unable to create requested object. Please try again. + + + + fail +Rez failed, requested object took too long to load. + + + + fail +Failed to place object at specified location. Please try again. + + + + fail +You cannot create plants on this land. + + + + fail +Cannot restore object. No world position found. + + + + fail +Unable to rez object because its mesh data is invalid. + + + + fail +Unable to rez object because there are already too many scripts in this region. + + + + fail +Your access privileges don't allow you to create objects there. + + + + fail +You are not currently allowed to create objects. + + + + fail +Invalid object parameters + + + + fail +Your access privileges don't allow you to duplicate objects here. + + + + fail +You are not allowed to change this shape. + + + + fail +Your access privileges don't allow you to claim objects here. + + + + fail +Deed failed because you do not have permission to deed objects for your group. + + + + fail +Your access privileges don't allow you to buy objects here. + + + + fail +Cannot attach object because an avatar is sitting on it. + + + + fail +Trees and grasses cannot be worn as attachments. + + + + fail +Cannot attach group-owned objects. + + + + fail +Cannot attach objects that you don't own. + + + + fail +Cannot attach objects that contribute to navmesh. + + + + fail +Cannot attach object because you do not have permission to move it. + + + + fail +Not enough script resources available to attach object! + + + + fail +You can't drop objects here; try the Free Trial area. + + + + fail +You can't drop mesh attachments. Detach to inventory and then rez in world. + + + + fail +Failed to drop attachment: you don't have permission to drop there. + + + + fail +Failed to drop attachment: insufficient available land resource. + + + + fail +Failed to drop attachments: insufficient available resources. + + + + fail +Cannot drop object here. Parcel is full. + + + + fail +Can't touch/grab this object because you are banned from the land parcel. + + + + fail +Please narrow your delete parameters. + + + + fail +Unable to upload asset. + + + + fail +Could not find user to teleport home + + + + fail +godlike request failed + + + + fail +generic request failed + + + + fail +Unable to upload postcard. Try again later. + + + + fail +Unable to fetch inventory details for the group notice. + + + + fail +Unable to send group notice -- not permitted. + + + + fail +Unable to send group notice -- could not construct inventory. + + + + fail +Unable to parse inventory in notice. + + + + fail +Terrain upload failed. + + + + fail +Terrain file written. + + + + fail +Terrain file written, starting download... + + + + fail +Terrain baked. + + + + fail +Only the first 10 selected objects have been disabled. Refresh and make additional selections if required. + + + + fail +You need to update your viewer to buy this parcel. + + + + fail +You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating. + + + + fail +Unable to buy, this parcel is not for sale. + + + + fail +Unable to buy, the sale price or land area has changed. + + + + fail +You are not the authorized buyer for this parcel. + + + + fail +You cannot purchase this parcel because it is already awaiting purchase aut + + + + fail +You cannot build objects here because doing so would overflow the parcel. + + + + fail +You selected land with different owners. Please select a smaller area and try again. + + + + fail +Not enough leased parcels in selection to join. + + + + fail +Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land. + + + + fail +Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug... + + + + fail +Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land. + + + + fail +Land has been divided. + + + + fail +You purchased a pass. + + + + fail +Region does not allow classified advertisements. + + + + fail +Your pass to this land is about to expire. + + + + fail +There is no suitable surface to sit on, try another spot. + + + + fail +No room to sit here, try another spot. + + + + fail +Autopilot canceled + + + + fail +Claim object failed because you don't have permission + + + + fail +Claim object failed because you don't have enough L$. + + + + fail +Cannot deed group-owned land. + + + + fail +Buy object failed because you don't have enough L$. + + + + fail +Buy inventory failed because you do not have enough L$ + + + + fail +You don't have enough L$ to buy a pass to this land. + + + + fail +Unable to buy pass right now. Try again later. + + + + fail +Can't create object because \nthe parcel is full. + + + + fail +Failed to place object at specified location. Please try again. + + + + fail +Unable to create landmark for event. + + + + fail +Your godlike powers break the freeze! + + + + fail +Request for special powers failed. This request has been logged. + + + + fail +The system is currently unable to process your request. The request timed out. + + + + fail +The system is unable to process your request. + + + + fail +Insufficient funds to create primitve. + + + + fail +Insufficient funds to create object. + + + + fail +Reset Home position since Home wasn't legal. + + + + fail +You cannot currently invite anyone to your location because the region is full. Try again later. + + + + fail +This region does not allow you to set your home location here. + + + + fail +You can only set your 'Home Location' on your land or at a mainland Infohub. + + + + fail +Home position set. + + + + fail +Cannot derez object due to inventory fault. + + + + fail +Cannot create requested inventory. + + + + fail +Cannot create requested inventory folder. + + + + fail +Cannot create that inventory. + + + + fail +Cannot create landmark. + + + + fail +Cannot create outfit right now. Try again in a minute. + + + + fail +Inventory is not for sale. + + + + fail +Unable to find inventory item. + + + + fail +Unable to find object. + + + + fail +Money transfers to objects are currently disabled in this region. + + + + fail +Could not figure out who to pay. + + + + fail +You cannot give L$ to public objects. + + + + fail +Inventory creation on in-world object failed. + + + + fail +An internal error prevented us from properly updating your viewer. The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers. + + + + fail +Cannot create large prims that intersect other players. Please re-try when other players have moved. + + + + + fail +[AV_FREEZER] has frozen you. You cannot move or interact with the world. + + + + fail +[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world. + + + + fail +Avatar frozen. + + + + fail +[AV_FREEZER] has unfrozen you. + + + + fail +Avatar unfrozen. + + + + fail +Freeze failed because you don't have admin permission for that parcel. + + + + fail +Your freeze expired, go about your business. + + + + fail +Sorry, can't freeze that user. + + + + fail +You are now the owner of object [OBJECT_NAME] + + + + fail +Can't rez object at [OBJECT_POS] because the owner of this land does not allow it. Use the land tool to see land ownership. + + + + fail +Object can not be rezzed because there are too many requests. + + + + fail +You cannot sit because you cannot move at this time. + + + + fail +You cannot sit because you are not allowed on that land. + + + + fail +Try moving closer. Can't sit on object because +it is not in the same region as you. + + + + fail +Unable to create new object. The region is full. + + + + fail +Failed to place object at specified location. Please try again. + + + + fail +You Can't create trees and grass on land you don't own. + + + + fail +Copy failed because you lack permission to copy the object '[OBJ_NAME]'. + + + + fail +Copy failed because the object '[OBJ_NAME]' cannot be transferred to you. + + + + fail +Copy failed because the object '[OBJ_NAME]' contributes to navmesh. + + + + fail +Duplicate with no root objects selected. + + + + fail +Can't duplicate objects because the region is full. + + + + fail +Can't duplicate objects - Can't find the parcel they are on. + + + + fail +Can't create object because +the parcel is full. + + + + fail +Attempt to rez an object failed. + + + + fail +Unable to create item that has caused problems on this region. + + + + fail +That inventory item has been blacklisted. + + + + fail +You are not currently allowed to create objects. + + + + fail +Land Search Blocked. +You have performed too many land searches too quickly. +Please try again in a minute. + + + + fail +Not enough script resources available to attach object! + + + + fail +You died and have been teleported to your home location + + + + fail +You are no longer allowed here and have [EJECT_TIME] seconds to leave. + + + + fail +You can't enter this region because +the server is full. + + + + fail +Save Back To Inventory has been disabled. + + + + fail +Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists. + + + + fail +Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'. + + + + fail +Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled. + + + + fail +You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'. + + + + fail +You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. + + + + fail +You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. + + + + fail +Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system. + + + + fail +Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'. + + + + fail +Cannot save your selection because the object '[OBJ_NAME]' is not copyable. + + + + fail +You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'. + + + + fail +Internal Error: Unknown destination type. + + + + fail +Delete failed because object not found + + + + fail +Sorry, can't eject that user. + + + + fail +This region does not allow you to set your home location here. + + + + fail +You can only set your 'Home Location' on your land or at a mainland Infohub. + + + + fail +Home position set. + + + + fail +Avatar ejected. + + + + fail +Eject failed because you don't have admin permission for that parcel. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because the parcel is full. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries. + + + + fail +Can't move object '[OBJECT_NAME]' to +[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE]) + + + + fail +You don't have permission to modify that object + + + + fail +Can't enable physics for an object that contributes to the navmesh. + + + + fail +Can't enable physics for keyframed objects. + + + + fail +Can't enable physics for object -- insufficient land resources. + + + + fail +Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] + + + + fail +This object cannot have a concave piece because it is phantom and contributes to the navmesh. + + + + fail +Unable to add item! + + + + fail +Unable to edit this! + + + + fail +Not permitted to edit this. + + + + fail +Not permitted to copy that inventory. + + + + fail +Cannot save to object contents: Item no longer exists. + + + + fail +Cannot save to object contents: Item with that name already exists in inventory + + + + fail +Cannot save to object contents: This would modify the attachment permissions. + + + + fail +Not permitted to edit this! + + + + fail +Too many scripts. + + + + fail +Unable to add script! + + + + fail +Asset server didn't respond in a timely fashion. Object returned to sim. + + + + fail +This region does not have physics shapes enabled. + + + + fail +You cannot modify the navmesh across region boundaries. + + + + fail +You don't have permission to modify that object. + + + + fail +Can't enable physics for an object that contributes to the navmesh. + + + + fail +Can't enable physics for keyframed objects. + + + + fail +Can't enable physics for object -- insufficient land resources. + + + + fail +Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] + + + + fail +Cannot set physics properties on that object type. + + + + fail +Cannot set root prim to have no shape. + + + + fail +This region does not have physics materials enabled. + + + + fail +Only root prims may have their physics materials adjusted. + + + + fail +Setting physics materials on characters is not yet supported. + + + + fail +One or more of the specified physics material properties was invalid. + + + + fail +You may not alter the stitching type of a mesh object. + + + + fail +You may not alter the shape of a mesh object + + + + fail +You can't enter this region because \nthe region is full. + + + + fail +Link failed -- owners differ + + + + fail +Link failed -- cannot modify the navmesh across region boundaries. + + + + fail +Link failed because you do not have edit permission. + + + + fail +Link failed -- too many primitives + + + + fail +Link failed -- cannot link no-copy with no-transfer + + + + fail +Link failed -- nothing linkable. + + + + fail +Link failed -- too many pathfinding characters + + + + fail +Link failed -- insufficient land resources + + + + fail +Object uses too many physics resources -- its dynamics have been disabled. + + + + fail +You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' + + + + fail +You have been teleported home by the object '[OBJECT_NAME]' + + + + fail +You have been teleported by an attachment on [ITEM_ID] + + + + fail +You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' + + + + fail +You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID] + + + + fail +You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user. + + + + fail +Unable to create requested object. The region is full. + + + + fail +You can't attach multiple objects to one spot. + + + + fail +You can't create multiple objects here. + + + + fail +Unable to create requested object. Object is missing from database. + + + + fail +Unable to create requested object. The request timed out. Please try again. + + + + fail +Unable to create requested object. Please try again. + + + + fail +Rez failed, requested object took too long to load. + + + + fail +Failed to place object at specified location. Please try again. + + + + fail +You cannot create plants on this land. + + + + fail +Cannot restore object. No world position found. + + + + fail +Unable to rez object because its mesh data is invalid. + + + + fail +Unable to rez object because there are already too many scripts in this region. + + + + fail +Your access privileges don't allow you to create objects there. + + + + fail +You are not currently allowed to create objects. + + + + fail +Invalid object parameters + + + + fail +Your access privileges don't allow you to duplicate objects here. + + + + fail +You are not allowed to change this shape. + + + + fail +Your access privileges don't allow you to claim objects here. + + + + fail +Deed failed because you do not have permission to deed objects for your group. + + + + fail +Your access privileges don't allow you to buy objects here. + + + + fail +Cannot attach object because an avatar is sitting on it. + + + + fail +Trees and grasses cannot be worn as attachments. + + + + fail +Cannot attach group-owned objects. + + + + fail +Cannot attach objects that you don't own. + + + + fail +Cannot attach objects that contribute to navmesh. + + + + fail +Cannot attach object because you do not have permission to move it. + + + + fail +Not enough script resources available to attach object! + + + + fail +You can't drop objects here; try the Free Trial area. + + + + fail +You can't drop mesh attachments. Detach to inventory and then rez in world. + + + + fail +Failed to drop attachment: you don't have permission to drop there. + + + + fail +Failed to drop attachment: insufficient available land resource. + + + + fail +Failed to drop attachments: insufficient available resources. + + + + fail +Cannot drop object here. Parcel is full. + + + + fail +Can't touch/grab this object because you are banned from the land parcel. + + + + fail +Please narrow your delete parameters. + + + + fail +Unable to upload asset. + + + + fail +Could not find user to teleport home + + + + fail +godlike request failed + + + + fail +generic request failed + + + + fail +Unable to upload postcard. Try again later. + + + + fail +Unable to fetch inventory details for the group notice. + + + + fail +Unable to send group notice -- not permitted. + + + + fail +Unable to send group notice -- could not construct inventory. + + + + fail +Unable to parse inventory in notice. + + + + fail +Terrain upload failed. + + + + fail +Terrain file written. + + + + fail +Terrain file written, starting download... + + + + fail +Terrain baked. + + + + fail +Only the first 10 selected objects have been disabled. Refresh and make additional selections if required. + + + + fail +You need to update your viewer to buy this parcel. + + + + fail +You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating. + + + + fail +Unable to buy, this parcel is not for sale. + + + + fail +Unable to buy, the sale price or land area has changed. + + + + fail +You are not the authorized buyer for this parcel. + + + + fail +You cannot purchase this parcel because it is already awaiting purchase aut + + + + fail +You cannot build objects here because doing so would overflow the parcel. + + + + fail +You selected land with different owners. Please select a smaller area and try again. + + + + fail +Not enough leased parcels in selection to join. + + + + fail +Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land. + + + + fail +Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug... + + + + fail +Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land. + + + + fail +Land has been divided. + + + + fail +You purchased a pass. + + + + fail +Region does not allow classified advertisements. + + + + fail +Your pass to this land is about to expire. + + + + fail +There is no suitable surface to sit on, try another spot. + + + + fail +No room to sit here, try another spot. + + + + fail +Autopilot canceled + + + + fail +Claim object failed because you don't have permission + + + + fail +Claim object failed because you don't have enough L$. + + + + fail +Cannot deed group-owned land. + + + + fail +Buy object failed because you don't have enough L$. + + + + fail +Buy inventory failed because you do not have enough L$ + + + + fail +You don't have enough L$ to buy a pass to this land. + + + + fail +Unable to buy pass right now. Try again later. + + + + fail +Can't create object because \nthe parcel is full. + + + + fail +Failed to place object at specified location. Please try again. + + + + fail +Unable to create landmark for event. + + + + fail +Your godlike powers break the freeze! + + + + fail +Request for special powers failed. This request has been logged. + + + + fail +The system is currently unable to process your request. The request timed out. + + + + fail +The system is unable to process your request. + + + + fail +Insufficient funds to create primitve. + + + + fail +Insufficient funds to create object. + + + + fail +Reset Home position since Home wasn't legal. + + + + fail +You cannot currently invite anyone to your location because the region is full. Try again later. + + + + fail +This region does not allow you to set your home location here. + + + + fail +You can only set your 'Home Location' on your land or at a mainland Infohub. + + + + fail +Home position set. + + + + fail +Cannot derez object due to inventory fault. + + + + fail +Cannot create requested inventory. + + + + fail +Cannot create requested inventory folder. + + + + fail +Cannot create that inventory. + + + + fail +Cannot create landmark. + + + + fail +Cannot create outfit right now. Try again in a minute. + + + + fail +Inventory is not for sale. + + + + fail +Unable to find inventory item. + + + + fail +Unable to find object. + + + + fail +Money transfers to objects are currently disabled in this region. + + + + fail +Could not figure out who to pay. + + + + fail +You cannot give L$ to public objects. + + + + fail +Inventory creation on in-world object failed. + + + + fail +An internal error prevented us from properly updating your viewer. The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers. + + + diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index eea2606125..df91ad8b5e 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -254,7 +254,7 @@ things in this group. There's a broad variety of Abilities. column_padding="0" draw_stripes="true" height="200" - follows="left|top" + follows="left|top|right" layout="topleft" left="0" right="-1" diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml index cdf14572fe..e844a15118 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml @@ -30,7 +30,7 @@ (This page does not pass the specified whitelist) Loading... diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index e69a17e037..6ee8fc3a4c 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -292,6 +292,10 @@ label="Open" name="Open" value="Open" /> + -llDialog(key avatar, string message, list buttons, integer chat_channel +llDialog(key avatar, string message, list buttons, integer chat_channel) Shows a dialog box on the avatar's screen with a message and up to 12 buttons. If a button is pressed, the avatar says the text of the button label on chat_channel. @@ -3330,7 +3330,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Adult Region Moderate Region General Region - Avatars visible and chat allowed outside of this parcel + Avatars inside this parcel cannot be seen or heard by avatars outside this parcel Objects that move may not behave correctly in this region until the region is rebaked. Dynamic pathfinding is not enabled on this region. -- cgit v1.2.3 From ba3e89b5c731ed6dc36d4650928be8081b3289f5 Mon Sep 17 00:00:00 2001 From: callum_linden Date: Fri, 18 Jan 2013 16:43:19 -0800 Subject: first push - patch from CmdCupCake plus force FMODEX on --- indra/newview/CMakeLists.txt | 57 +++++++++++++++++++++------ indra/newview/app_settings/settings.xml | 44 +++++++++++++++++++++ indra/newview/linux_tools/wrapper.sh | 12 ++++-- indra/newview/llstartup.cpp | 15 +++++++ indra/newview/llvieweraudio.cpp | 70 +++++++++++++++------------------ indra/newview/llviewercontrol.cpp | 1 + indra/newview/viewer_manifest.py | 18 +++++++++ 7 files changed, 162 insertions(+), 55 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b569808a06..793b01baa1 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -10,7 +10,8 @@ include(DirectX) include(OpenSSL) include(DragDrop) include(EXPAT) -include(FMOD) +include(FMODEX) +set(FMOD OFF) include(OPENAL) include(FindOpenGL) include(Hunspell) @@ -52,6 +53,14 @@ if (NOT HAVOK_TPV) add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions) endif (NOT HAVOK_TPV) +if(FMODEX) + include_directories(${FMODEX_INCLUDE_DIR}) +endif(FMODEX) + +if(FMOD) + include_directories(${FMOD_INCLUDE_DIR}) +endif(FMOD) + include_directories( ${DBUSGLIB_INCLUDE_DIRS} ${JSONCPP_INCLUDE_DIR} @@ -61,7 +70,6 @@ include_directories( ${LLCOMMON_INCLUDE_DIRS} ${LLCOREHTTP_INCLUDE_DIRS} ${LLPHYSICS_INCLUDE_DIRS} - ${FMOD_INCLUDE_DIR} ${LLIMAGE_INCLUDE_DIRS} ${LLKDU_INCLUDE_DIRS} ${LLINVENTORY_INCLUDE_DIRS} @@ -1521,10 +1529,15 @@ if (OPENAL) set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL") endif (OPENAL) -if (FMOD) - set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD") +if (FMOD OR FMODEX) + if (FMODEX) + set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX") + endif (FMODEX) + if (FMOD) + set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD") + endif (FMOD) - if (DARWIN) + if (DARWIN AND FMOD) set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY}) @@ -1537,11 +1550,16 @@ if (FMOD) ) set(FMODWRAPPER_LIBRARY fmodwrapper) target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) - else (DARWIN) - # fmodwrapper unnecessary on linux or windows - set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY}) - endif (DARWIN) -endif (FMOD) + else (DARWIN AND FMOD) + # fmodwrapper unnecessary on linux or windows for fmod and darwin for fmodex + if (FMODEX) + set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) + endif (FMODEX) + if (FMOD) + set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY}) + endif (FMOD) + endif (DARWIN AND FMOD) +endif (FMOD OR FMODEX) set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") @@ -1616,9 +1634,6 @@ if (WINDOWS) ${SHARED_LIB_STAGING_DIR}/Release/openjpeg.dll ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/openjpeg.dll ${SHARED_LIB_STAGING_DIR}/Debug/openjpegd.dll - ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll - ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll - ${SHARED_LIB_STAGING_DIR}/Debug/fmod.dll ${SHARED_LIB_STAGING_DIR}/Release/msvcr100.dll ${SHARED_LIB_STAGING_DIR}/Release/msvcp100.dll ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/msvcr100.dll @@ -1683,6 +1698,22 @@ if (WINDOWS) windows-updater ) + if (FMODEX) + list(APPEND COPY_INPUT_DEPENDENCIES + ${SHARED_LIB_STAGING_DIR}/Release/fmodex.dll + ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmodex.dll + ${SHARED_LIB_STAGING_DIR}/Debug/fmodexL.dll + ) + endif (FMODEX) + + if (FMOD) + list(APPEND COPY_INPUT_DEPENDENCIES + ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll + ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll + ${SHARED_LIB_STAGING_DIR}/Debug/fmod.dll + ) + endif (FMOD) + add_custom_command( OUTPUT ${CMAKE_CFG_INTDIR}/copy_touched.bat COMMAND ${PYTHON_EXECUTABLE} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2e91d10cd3..995546ab23 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -269,6 +269,17 @@ Value 1.0 + AudioLevelUnderwaterRolloff + + Comment + Controls the distance-based dropoff of audio volume underwater(fraction or multiple of default audio rolloff) + Persist + 1 + Type + F32 + Value + 5.0 + AudioLevelSFX Comment @@ -14094,5 +14105,38 @@ Value 0 + FMODExProfilerEnable + + Comment + Enable profiler tool if using FMOD Ex + Persist + 1 + Type + Boolean + Value + 0 + + FMODExDecodeBufferSize + + Comment + Sets the streaming decode buffer size (in milliseconds) + Persist + 1 + Type + U32 + Value + 1000 + + FMODExStreamBufferSize + + Comment + Sets the streaming buffer size (in milliseconds) + Persist + 1 + Type + U32 + Value + 7000 + diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index 20936c6460..71b7e74c63 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -4,17 +4,21 @@ ## These options are for self-assisted troubleshooting during this beta ## testing phase; you should not usually need to touch them. +## - Avoids using any FMOD Ex audio driver. +#export LL_BAD_FMODEX_DRIVER=x ## - Avoids using any OpenAL audio driver. #export LL_BAD_OPENAL_DRIVER=x ## - Avoids using any FMOD audio driver. #export LL_BAD_FMOD_DRIVER=x +## - Avoids using the FMOD Ex PulseAudio audio driver. +#export LL_BAD_FMOD_PULSEAUDIO=x +## - Avoids using the FMOD or FMOD Ex ALSA audio driver. +#export LL_BAD_FMOD_ALSA=x +## - Avoids using the FMOD or FMOD Ex OSS audio driver. +#export LL_BAD_FMOD_OSS=x ## - Avoids using the FMOD ESD audio driver. #export LL_BAD_FMOD_ESD=x -## - Avoids using the FMOD OSS audio driver. -#export LL_BAD_FMOD_OSS=x -## - Avoids using the FMOD ALSA audio driver. -#export LL_BAD_FMOD_ALSA=x ## - Avoids the optional OpenGL extensions which have proven most problematic ## on some hardware. Disabling this option may cause BETTER PERFORMANCE but diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 0e3007724b..6a874d1af5 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -37,6 +37,10 @@ #include "llviewermedia_streamingaudio.h" #include "llaudioengine.h" +#ifdef LL_FMODEX +# include "llaudioengine_fmodex.h" +#endif + #ifdef LL_FMOD # include "llaudioengine_fmod.h" #endif @@ -623,6 +627,17 @@ bool idle_startup() { gAudiop = NULL; +#ifdef LL_FMODEX + if (!gAudiop +#if !LL_WINDOWS + && NULL == getenv("LL_BAD_FMODEX_DRIVER") +#endif // !LL_WINDOWS + ) + { + gAudiop = (LLAudioEngine *) new LLAudioEngine_FMODEX(gSavedSettings.getBOOL("FMODExProfilerEnable")); + } +#endif + #ifdef LL_OPENAL if (!gAudiop #if !LL_WINDOWS diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 8d8c401dac..f349eeac63 100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -43,6 +43,8 @@ #include "llparcel.h" #include "llviewermessage.h" +#include "llstreamingaudio.h" + ///////////////////////////////////////////////////////// LLViewerAudio::LLViewerAudio() : @@ -101,6 +103,11 @@ void LLViewerAudio::startInternetStreamWithAutoFade(std::string streamURI) else { mFadeState = FADE_IN; + + LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl(); + if(stream && stream->supportsAdjustableBufferSizes()) + stream->setBufferSizes(gSavedSettings.getU32("FMODExStreamBufferSize"),gSavedSettings.getU32("FMODExDecodeBufferSize")); + gAudiop->startInternetStream(mNextStreamURI); startFading(); registerIdleListener(); @@ -156,6 +163,11 @@ bool LLViewerAudio::onIdleUpdate() if (!mNextStreamURI.empty()) { mFadeState = FADE_IN; + + LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl(); + if(stream && stream->supportsAdjustableBufferSizes()) + stream->setBufferSizes(gSavedSettings.getU32("FMODExStreamBufferSize"),gSavedSettings.getU32("FMODExDecodeBufferSize")); + gAudiop->startInternetStream(mNextStreamURI); startFading(); } @@ -385,7 +397,12 @@ void audio_update_volume(bool force_update) gAudiop->setMasterGain ( master_volume ); gAudiop->setDopplerFactor(gSavedSettings.getF32("AudioLevelDoppler")); - gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff")); + + if(!LLViewerCamera::getInstance()->cameraUnderWater()) + gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff")); + else + gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelUnderwaterRolloff")); + gAudiop->setMuted(mute_audio || progress_view_visible); if (force_update) @@ -466,44 +483,22 @@ void audio_update_listener() void audio_update_wind(bool force_update) { #ifdef kAUDIO_ENABLE_WIND - // - // Extract height above water to modulate filter by whether above/below water - // + LLViewerRegion* region = gAgent.getRegion(); if (region) { - static F32 last_camera_water_height = -1000.f; - LLVector3 camera_pos = gAgentCamera.getCameraPositionAgent(); - F32 camera_water_height = camera_pos.mV[VZ] - region->getWaterHeight(); - - // - // Don't update rolloff factor unless water surface has been crossed - // - if (force_update || (last_camera_water_height * camera_water_height) < 0.f) - { - static LLUICachedControl rolloff("AudioLevelRolloff", 1.0f); - if (camera_water_height < 0.f) - { - gAudiop->setRolloffFactor(rolloff * LL_ROLLOFF_MULTIPLIER_UNDER_WATER); - } - else - { - gAudiop->setRolloffFactor(rolloff); - } - } - - // Scale down the contribution of weather-simulation wind to the - // ambient wind noise. Wind velocity averages 3.5 m/s, with gusts to 7 m/s - // whereas steady-state avatar walk velocity is only 3.2 m/s. - // Without this the world feels desolate on first login when you are - // standing still. - static LLUICachedControl wind_level("AudioLevelWind", 0.5f); - LLVector3 scaled_wind_vec = gWindVec * wind_level; - - // Mix in the avatar's motion, subtract because when you walk north, - // the apparent wind moves south. - LLVector3 final_wind_vec = scaled_wind_vec - gAgent.getVelocity(); - + // Scale down the contribution of weather-simulation wind to the + // ambient wind noise. Wind velocity averages 3.5 m/s, with gusts to 7 m/s + // whereas steady-state avatar walk velocity is only 3.2 m/s. + // Without this the world feels desolate on first login when you are + // standing still. + static LLUICachedControl wind_level("AudioLevelWind", 0.5f); + LLVector3 scaled_wind_vec = gWindVec * wind_level; + + // Mix in the avatar's motion, subtract because when you walk north, + // the apparent wind moves south. + LLVector3 final_wind_vec = scaled_wind_vec - gAgent.getVelocity(); + // rotate the wind vector to be listener (agent) relative gRelativeWindVec = gAgent.getFrameAgent().rotateToLocal( final_wind_vec ); @@ -536,8 +531,7 @@ void audio_update_wind(bool force_update) gAudiop->mMaxWindGain = llmax(gAudiop->mMaxWindGain - volume_delta, 0.f); } - last_camera_water_height = camera_water_height; - gAudiop->updateWind(gRelativeWindVec, camera_water_height); + gAudiop->updateWind(gRelativeWindVec, gAgentCamera.getCameraPositionAgent()[VZ] - gAgent.getRegion()->getWaterHeight()); } #endif } diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 051f5f4485..a62f73deef 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -655,6 +655,7 @@ void settings_setup_listeners() gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); + gSavedSettings.getControl("AudioLevelUnderwaterRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index ea75d4f4f6..cdd227e9fe 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -367,6 +367,14 @@ class WindowsManifest(ViewerManifest): print err.message print "Skipping COLLADA and GLOD libraries (assumming linked statically)" + # Get fmodex dll, continue if missing + try: + if self.args['configuration'].lower() == 'debug': + self.path("fmodexL.dll") + else: + self.path("fmodex.dll") + except: + print "Skipping fmodex audio library(assuming other audio engine)" # Get fmod dll, continue if missing if not self.path("fmod.dll"): @@ -743,6 +751,7 @@ class DarwinManifest(ViewerManifest): "libcollada14dom.dylib", "libexpat.1.5.2.dylib", "libexception_handler.dylib", + "libfmodex.dylib", "libGLOD.dylib", ): dylibs += path_optional(os.path.join(libdir, libfile), libfile) @@ -1125,6 +1134,15 @@ class Linux_i686Manifest(LinuxManifest): except: print "Skipping libfmod-3.75.so - not found" pass + + try: + self.path("libfmodex-*.so") + self.path("libfmodex.so") + pass + except: + print "Skipping libfmodex.so - not found" + pass + self.end_prefix("lib") # Vivox runtimes -- cgit v1.2.3 From 48df050feffc9e70d09e4caae239a55504c40b38 Mon Sep 17 00:00:00 2001 From: eli Date: Thu, 31 Jan 2013 14:44:53 -0800 Subject: sync with viewer-development --- .../newview/skins/default/xui/en/notifications.xml | 1738 -------------------- .../default/xui/en/panel_preferences_graphics1.xml | 13 - 2 files changed, 1751 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 44c18c2cce..c8f5cbb2b0 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -8872,14 +8872,6 @@ Cannot save to object contents: Item with that name already exists in inventory Cannot save to object contents: This would modify the attachment permissions. - - fail -Not permitted to edit this! - - - - fail -You don't have permission to modify that object. - - - - fail -Can't enable physics for an object that contributes to the navmesh. - - - - fail -Can't enable physics for keyframed objects. - - - - fail -Can't enable physics for object -- insufficient land resources. - - - - fail -Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] - - - - - fail -[AV_FREEZER] has frozen you. You cannot move or interact with the world. - - - - fail -[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world. - - - - fail -Avatar frozen. - - - - fail -[AV_FREEZER] has unfrozen you. - - - - fail -Avatar unfrozen. - - - - fail -Freeze failed because you don't have admin permission for that parcel. - - - - fail -Your freeze expired, go about your business. - - - - fail -Sorry, can't freeze that user. - - - - fail -You are now the owner of object [OBJECT_NAME] - - - - fail -Can't rez object at [OBJECT_POS] because the owner of this land does not allow it. Use the land tool to see land ownership. - - - - fail -Object can not be rezzed because there are too many requests. - - - - fail -You cannot sit because you cannot move at this time. - - - - fail -You cannot sit because you are not allowed on that land. - - - - fail -Try moving closer. Can't sit on object because -it is not in the same region as you. - - - - fail -Unable to create new object. The region is full. - - - - fail -Failed to place object at specified location. Please try again. - - - - fail -You Can't create trees and grass on land you don't own. - - - - fail -Copy failed because you lack permission to copy the object '[OBJ_NAME]'. - - - - fail -Copy failed because the object '[OBJ_NAME]' cannot be transferred to you. - - - - fail -Copy failed because the object '[OBJ_NAME]' contributes to navmesh. - - - - fail -Duplicate with no root objects selected. - - - - fail -Can't duplicate objects because the region is full. - - - - fail -Can't duplicate objects - Can't find the parcel they are on. - - - - fail -Can't create object because -the parcel is full. - - - - fail -Attempt to rez an object failed. - - - - fail -Unable to create item that has caused problems on this region. - - - - fail -That inventory item has been blacklisted. - - - - fail -You are not currently allowed to create objects. - - - - fail -Land Search Blocked. -You have performed too many land searches too quickly. -Please try again in a minute. - - - - fail -Not enough script resources available to attach object! - - - - fail -You died and have been teleported to your home location - - - - fail -You are no longer allowed here and have [EJECT_TIME] seconds to leave. - - - - fail -You can't enter this region because -the server is full. - - - - fail -Save Back To Inventory has been disabled. - - - - fail -Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists. - - - - fail -Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'. - - - - fail -Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled. - - - - fail -You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'. - - - - fail -You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. - - - - fail -You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. - - - - fail -Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system. - - - - fail -Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'. - - - - fail -Cannot save your selection because the object '[OBJ_NAME]' is not copyable. - - - - fail -You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'. - - - - fail -Internal Error: Unknown destination type. - - - - fail -Delete failed because object not found - - - - fail -Sorry, can't eject that user. - - - - fail -This region does not allow you to set your home location here. - - - - fail -You can only set your 'Home Location' on your land or at a mainland Infohub. - - - - fail -Home position set. - - - - fail -Avatar ejected. - - - - fail -Eject failed because you don't have admin permission for that parcel. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because the parcel is full. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE]) - - - - fail -You don't have permission to modify that object - - - - fail -Can't enable physics for an object that contributes to the navmesh. - - - - fail -Can't enable physics for keyframed objects. - - - - fail -Can't enable physics for object -- insufficient land resources. - - - - fail -Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] - - - - fail -This object cannot have a concave piece because it is phantom and contributes to the navmesh. - - - - fail -Unable to add item! - - - - fail -Unable to edit this! - - - - fail -Not permitted to edit this. - - - - fail -Not permitted to copy that inventory. - - - - fail -Cannot save to object contents: Item no longer exists. - - - - fail -Cannot save to object contents: Item with that name already exists in inventory - - - - fail -Cannot save to object contents: This would modify the attachment permissions. - - - - fail -Not permitted to edit this! - - - - fail -Too many scripts. - - - - fail -Unable to add script! - - - - fail -Asset server didn't respond in a timely fashion. Object returned to sim. - - - - fail -This region does not have physics shapes enabled. - - - - fail -You cannot modify the navmesh across region boundaries. - - - - fail -You don't have permission to modify that object. - - - - fail -Can't enable physics for an object that contributes to the navmesh. - - - - fail -Can't enable physics for keyframed objects. - - - - fail -Can't enable physics for object -- insufficient land resources. - - - - fail -Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] - - - - fail -Cannot set physics properties on that object type. - - - - fail -Cannot set root prim to have no shape. - - - - fail -This region does not have physics materials enabled. - - - - fail -Only root prims may have their physics materials adjusted. - - - - fail -Setting physics materials on characters is not yet supported. - - - - fail -One or more of the specified physics material properties was invalid. - - - - fail -You may not alter the stitching type of a mesh object. - - - - fail -You may not alter the shape of a mesh object - - - - fail -You can't enter this region because \nthe region is full. - - - - fail -Link failed -- owners differ - - - - fail -Link failed -- cannot modify the navmesh across region boundaries. - - - - fail -Link failed because you do not have edit permission. - - - - fail -Link failed -- too many primitives - - - - fail -Link failed -- cannot link no-copy with no-transfer - - - - fail -Link failed -- nothing linkable. - - - - fail -Link failed -- too many pathfinding characters - - - - fail -Link failed -- insufficient land resources - - - - fail -Object uses too many physics resources -- its dynamics have been disabled. - - - - fail -You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' - - - - fail -You have been teleported home by the object '[OBJECT_NAME]' - - - - fail -You have been teleported by an attachment on [ITEM_ID] - - - - fail -You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' - - - - fail -You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID] - - - - fail -You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user. - - - - fail -Unable to create requested object. The region is full. - - - - fail -You can't attach multiple objects to one spot. - - - - fail -You can't create multiple objects here. - - - - fail -Unable to create requested object. Object is missing from database. - - - - fail -Unable to create requested object. The request timed out. Please try again. - - - - fail -Unable to create requested object. Please try again. - - - - fail -Rez failed, requested object took too long to load. - - - - fail -Failed to place object at specified location. Please try again. - - - - fail -You cannot create plants on this land. - - - - fail -Cannot restore object. No world position found. - - - - fail -Unable to rez object because its mesh data is invalid. - - - - fail -Unable to rez object because there are already too many scripts in this region. - - - - fail -Your access privileges don't allow you to create objects there. - - - - fail -You are not currently allowed to create objects. - - - - fail -Invalid object parameters - - - - fail -Your access privileges don't allow you to duplicate objects here. - - - - fail -You are not allowed to change this shape. - - - - fail -Your access privileges don't allow you to claim objects here. - - - - fail -Deed failed because you do not have permission to deed objects for your group. - - - - fail -Your access privileges don't allow you to buy objects here. - - - - fail -Cannot attach object because an avatar is sitting on it. - - - - fail -Trees and grasses cannot be worn as attachments. - - - - fail -Cannot attach group-owned objects. - - - - fail -Cannot attach objects that you don't own. - - - - fail -Cannot attach objects that contribute to navmesh. - - - - fail -Cannot attach object because you do not have permission to move it. - - - - fail -Not enough script resources available to attach object! - - - - fail -You can't drop objects here; try the Free Trial area. - - - - fail -You can't drop mesh attachments. Detach to inventory and then rez in world. - - - - fail -Failed to drop attachment: you don't have permission to drop there. - - - - fail -Failed to drop attachment: insufficient available land resource. - - - - fail -Failed to drop attachments: insufficient available resources. - - - - fail -Cannot drop object here. Parcel is full. - - - - fail -Can't touch/grab this object because you are banned from the land parcel. - - - - fail -Please narrow your delete parameters. - - - - fail -Unable to upload asset. - - - - fail -Could not find user to teleport home - - - - fail -godlike request failed - - - - fail -generic request failed - - - - fail -Unable to upload postcard. Try again later. - - - - fail -Unable to fetch inventory details for the group notice. - - - - fail -Unable to send group notice -- not permitted. - - - - fail -Unable to send group notice -- could not construct inventory. - - - - fail -Unable to parse inventory in notice. - - - - fail -Terrain upload failed. - - - - fail -Terrain file written. - - - - fail -Terrain file written, starting download... - - - - fail -Terrain baked. - - - - fail -Only the first 10 selected objects have been disabled. Refresh and make additional selections if required. - - - - fail -You need to update your viewer to buy this parcel. - - - - fail -You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating. - - - - fail -Unable to buy, this parcel is not for sale. - - - - fail -Unable to buy, the sale price or land area has changed. - - - - fail -You are not the authorized buyer for this parcel. - - - - fail -You cannot purchase this parcel because it is already awaiting purchase aut - - - - fail -You cannot build objects here because doing so would overflow the parcel. - - - - fail -You selected land with different owners. Please select a smaller area and try again. - - - - fail -Not enough leased parcels in selection to join. - - - - fail -Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land. - - - - fail -Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug... - - - - fail -Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land. - - - - fail -Land has been divided. - - - - fail -You purchased a pass. - - - - fail -Region does not allow classified advertisements. - - - - fail -Your pass to this land is about to expire. - - - - fail -There is no suitable surface to sit on, try another spot. - - - - fail -No room to sit here, try another spot. - - - - fail -Autopilot canceled - - - - fail -Claim object failed because you don't have permission - - - - fail -Claim object failed because you don't have enough L$. - - - - fail -Cannot deed group-owned land. - - - - fail -Buy object failed because you don't have enough L$. - - - - fail -Buy inventory failed because you do not have enough L$ - - - - fail -You don't have enough L$ to buy a pass to this land. - - - - fail -Unable to buy pass right now. Try again later. - - - - fail -Can't create object because \nthe parcel is full. - - - - fail -Failed to place object at specified location. Please try again. - - - - fail -Unable to create landmark for event. - - - - fail -Your godlike powers break the freeze! - - - - fail -Request for special powers failed. This request has been logged. - - - - fail -The system is currently unable to process your request. The request timed out. - - - - fail -The system is unable to process your request. - - - - fail -Insufficient funds to create primitve. - - - - fail -Insufficient funds to create object. - - - - fail -Reset Home position since Home wasn't legal. - - - - fail -You cannot currently invite anyone to your location because the region is full. Try again later. - - - - fail -This region does not allow you to set your home location here. - - - - fail -You can only set your 'Home Location' on your land or at a mainland Infohub. - - - - fail -Home position set. - - - - fail -Cannot derez object due to inventory fault. - - - - fail -Cannot create requested inventory. - - - - fail -Cannot create requested inventory folder. - - - - fail -Cannot create that inventory. - - - - fail -Cannot create landmark. - - - - fail -Cannot create outfit right now. Try again in a minute. - - - - fail -Inventory is not for sale. - - - - fail -Unable to find inventory item. - - - - fail -Unable to find object. - - - - fail -Money transfers to objects are currently disabled in this region. - - - - fail -Could not figure out who to pay. - - - - fail -You cannot give L$ to public objects. - - - - fail -Inventory creation on in-world object failed. - - - - fail -An internal error prevented us from properly updating your viewer. The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers. - - - diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 849f3ef73d..7eb0fac2be 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -152,19 +152,6 @@ width="80"> Mid - - High - Date: Fri, 1 Feb 2013 08:44:52 -0800 Subject: Removed (most) references to older FMOD library - still a little Linux clean up left --- indra/newview/CMakeLists.txt | 45 ++++++++++------------------------------ indra/newview/fmodwrapper.cpp | 4 ++-- indra/newview/llappviewer.cpp | 14 +------------ indra/newview/llstartup.cpp | 19 ++--------------- indra/newview/viewer_manifest.py | 4 ---- 5 files changed, 16 insertions(+), 70 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 793b01baa1..24a35bf8a2 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -11,7 +11,6 @@ include(OpenSSL) include(DragDrop) include(EXPAT) include(FMODEX) -set(FMOD OFF) include(OPENAL) include(FindOpenGL) include(Hunspell) @@ -57,10 +56,6 @@ if(FMODEX) include_directories(${FMODEX_INCLUDE_DIR}) endif(FMODEX) -if(FMOD) - include_directories(${FMOD_INCLUDE_DIR}) -endif(FMOD) - include_directories( ${DBUSGLIB_INCLUDE_DIRS} ${JSONCPP_INCLUDE_DIR} @@ -1527,20 +1522,15 @@ endif (WINDOWS) if (OPENAL) set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL") -endif (OPENAL) +endif (OPENAL) -if (FMOD OR FMODEX) - if (FMODEX) - set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX") - endif (FMODEX) - if (FMOD) - set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD") - endif (FMOD) +if (FMODEX) + set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX") - if (DARWIN AND FMOD) + if (DARWIN) set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) - set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY}) + set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY}) set_target_properties( fmodwrapper PROPERTIES @@ -1550,16 +1540,11 @@ if (FMOD OR FMODEX) ) set(FMODWRAPPER_LIBRARY fmodwrapper) target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) - else (DARWIN AND FMOD) - # fmodwrapper unnecessary on linux or windows for fmod and darwin for fmodex - if (FMODEX) - set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) - endif (FMODEX) - if (FMOD) - set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY}) - endif (FMOD) - endif (DARWIN AND FMOD) -endif (FMOD OR FMODEX) + else (DARWIN) + # fmodwrapper unnecessary on linux or windows + set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) + endif (DARWIN) +endif (FMODEX) set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") @@ -1705,15 +1690,7 @@ if (WINDOWS) ${SHARED_LIB_STAGING_DIR}/Debug/fmodexL.dll ) endif (FMODEX) - - if (FMOD) - list(APPEND COPY_INPUT_DEPENDENCIES - ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll - ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll - ${SHARED_LIB_STAGING_DIR}/Debug/fmod.dll - ) - endif (FMOD) - + add_custom_command( OUTPUT ${CMAKE_CFG_INTDIR}/copy_touched.bat COMMAND ${PYTHON_EXECUTABLE} diff --git a/indra/newview/fmodwrapper.cpp b/indra/newview/fmodwrapper.cpp index 16f1d19a78..e74c4a1d7c 100644 --- a/indra/newview/fmodwrapper.cpp +++ b/indra/newview/fmodwrapper.cpp @@ -26,12 +26,12 @@ extern "C" { - void FSOUND_Init(void); + void FMOD_System_Init(void); } void* fmodwrapper(void) { // When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly // reference at least one symbol in the library. This seemed like the simplest way. - return (void*)&FSOUND_Init; + return (void*)&FMOD_System_Init; } diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 1000c0e1e8..55d7a5d45d 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1677,19 +1677,7 @@ bool LLAppViewer::cleanup() gAudiop->setStreamingAudioImpl(NULL); // shut down the audio subsystem - - bool want_longname = false; - if (gAudiop->getDriverName(want_longname) == "FMOD") - { - // This hack exists because fmod likes to occasionally - // crash or hang forever when shutting down, for no - // apparent reason. - llwarns << "Hack, skipping FMOD audio engine cleanup" << llendflush; - } - else - { - gAudiop->shutdown(); - } + gAudiop->shutdown(); delete gAudiop; gAudiop = NULL; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 6a874d1af5..18ef36a893 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -41,10 +41,6 @@ # include "llaudioengine_fmodex.h" #endif -#ifdef LL_FMOD -# include "llaudioengine_fmod.h" -#endif - #ifdef LL_OPENAL #include "llaudioengine_openal.h" #endif @@ -648,22 +644,11 @@ bool idle_startup() gAudiop = (LLAudioEngine *) new LLAudioEngine_OpenAL(); } #endif - -#ifdef LL_FMOD - if (!gAudiop -#if !LL_WINDOWS - && NULL == getenv("LL_BAD_FMOD_DRIVER") -#endif // !LL_WINDOWS - ) - { - gAudiop = (LLAudioEngine *) new LLAudioEngine_FMOD(); - } -#endif - + if (gAudiop) { #if LL_WINDOWS - // FMOD on Windows needs the window handle to stop playing audio + // FMOD Ex on Windows needs the window handle to stop playing audio // when window is minimized. JC void* window_handle = (HWND)gViewerWindow->getPlatformWindow(); #else diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index cdd227e9fe..37b119041f 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -376,10 +376,6 @@ class WindowsManifest(ViewerManifest): except: print "Skipping fmodex audio library(assuming other audio engine)" - # Get fmod dll, continue if missing - if not self.path("fmod.dll"): - print "Skipping fmod.dll" - # For textures if self.args['configuration'].lower() == 'debug': self.path("openjpegd.dll") -- cgit v1.2.3 From bc161b040a5f6817a9adcec759e48bf590c2ed45 Mon Sep 17 00:00:00 2001 From: Sovereign Engineer Date: Mon, 4 Feb 2013 08:21:19 -0500 Subject: Remove FMOD 3.75 leftovers --- indra/newview/fmod_hidden_symbols.exp | 240 ---------------------------------- indra/newview/fmodwrapper.cpp | 37 ------ indra/newview/linux_tools/wrapper.sh | 6 +- indra/newview/viewer_manifest.py | 7 - 4 files changed, 1 insertion(+), 289 deletions(-) delete mode 100644 indra/newview/fmod_hidden_symbols.exp delete mode 100644 indra/newview/fmodwrapper.cpp (limited to 'indra/newview') diff --git a/indra/newview/fmod_hidden_symbols.exp b/indra/newview/fmod_hidden_symbols.exp deleted file mode 100644 index 1e790255bc..0000000000 --- a/indra/newview/fmod_hidden_symbols.exp +++ /dev/null @@ -1,240 +0,0 @@ -_CarbonSndPlayDoubleBuffer -_ConvertFromIeeeExtended -__book_maptype1_quantvals -__book_unquantize -__float32_pack -__float32_unpack -__ilog -__make_words -_lpc_clear -_lpc_init -__vorbis_block_alloc -__vorbis_block_ripcord -__vorbis_apply_window -__vorbis_window_get -_vorbis_analysis_blockout -_vorbis_analysis_buffer -_vorbis_analysis_wrote -_vorbis_block_clear -_vorbis_block_init -_vorbis_dsp_clear -_vorbis_synthesis_blockin -_vorbis_synthesis_init -_vorbis_synthesis_pcmout -_vorbis_synthesis_read -_vorbis_packet_blocksize -_vorbis_synthesis -_vorbis_book_clear -_vorbis_book_decode -_vorbis_book_decodev_add -_vorbis_book_decodev_set -_vorbis_book_decodevs_add -_vorbis_book_decodevv_add -_vorbis_book_init_decode -_vorbis_comment_add -_vorbis_comment_add_tag -_vorbis_comment_clear -_vorbis_comment_init -_vorbis_comment_query -_vorbis_comment_query_count -_vorbis_coslook -_vorbis_fromdBlook -_vorbis_info_blocksize -_vorbis_info_clear -_vorbis_info_init -_vorbis_invsq2explook -_vorbis_invsqlook -_vorbis_lpc_from_curve -_vorbis_lpc_from_data -_vorbis_lpc_predict -_vorbis_lsp_to_curve -_vorbis_staticbook_clear -_vorbis_staticbook_destroy -_vorbis_staticbook_unpack -_vorbis_synthesis_headerin -_vorbis_synthesis_lapout -_vorbis_synthesis_restart -_vorbis_synthesis_trackonly -_vorbis_window -_ogg_packet_clear -_ogg_page_bos -_ogg_page_checksum_set -_ogg_page_continued -_ogg_page_eos -_ogg_page_granulepos -_ogg_page_packets -_ogg_page_pageno -_ogg_page_serialno -_ogg_page_version -_ogg_stream_reset_serialno -_ogg_stream_clear -_ogg_stream_destroy -_ogg_stream_eos -_ogg_stream_flush -_ogg_stream_init -_ogg_stream_packetout -_ogg_stream_packetpeek -_ogg_stream_pagein -_ogg_stream_pageout -_ogg_stream_reset -_ogg_sync_buffer -_ogg_sync_clear -_ogg_sync_destroy -_ogg_sync_init -_ogg_sync_pageout -_ogg_sync_pageseek -_ogg_sync_reset -_ogg_sync_wrote -_ov_bitrate -_ov_bitrate_instant -_ov_clear -_ov_comment -_ov_info -_ov_open -_ov_open_callbacks -_ov_pcm_seek -_ov_pcm_seek_page -_ov_pcm_tell -_ov_pcm_total -_ov_raw_seek -_ov_raw_tell -_ov_raw_total -_ov_read -_ov_read_float -_ov_seekable -_ov_serialnumber -_ov_streams -_ov_test -_ov_test_callbacks -_ov_test_open -_ov_time_seek -_ov_time_seek_page -_ov_time_tell -_ov_time_total -_ogg_toupper -_oggpackB_adv -_oggpackB_adv1 -_oggpackB_bits -_oggpackB_bytes -_oggpackB_get_buffer -_oggpackB_look -_oggpackB_look1 -_oggpackB_read -_oggpackB_read1 -_oggpackB_readinit -_oggpackB_reset -_oggpack_adv -_oggpack_adv1 -_oggpack_bits -_oggpack_bytes -_oggpack_get_buffer -_oggpack_look -_oggpack_look1 -_oggpack_read -_oggpack_read1 -_oggpack_readinit -_oggpack_reset -_ov_crosslap -_ov_pcm_seek_lap -_ov_pcm_seek_page_lap -_ov_raw_seek_lap -_ov_time_seek_lap -_ov_time_seek_page_lap -_II_step_one -_II_step_two -_MyRecComp -_SampleRates -_Sinfo -_ValidStepIndex -__Z11fmodwrapperv -__Z11fmodwrapperv.eh -__floor_P -__mapping_P -__residue_P -__ve_envelope_clear -__ve_envelope_init -__ve_envelope_mark -__ve_envelope_search -__ve_envelope_shift -__vi_gpsy_free -__vi_psy_free -__vorbis_window_init -__vp_ampmax_decay -__vp_couple -__vp_global_free -__vp_global_look -__vp_noise_normalize -__vp_noise_normalize_sort -__vp_noisemask -__vp_offset_and_mix -__vp_psy_clear -__vp_psy_init -__vp_quantize_couple_memo -__vp_quantize_couple_sort -__vp_remove_floor -__vp_tonemask -_alloc_0 -_alloc_1 -_alloc_2 -_alloc_3 -_alloc_4 -_bandInfo -_cdcallback -_cdchannel -_cdmode -_cdnumtracks -_cdstream -_cdtrack -_drft_backward -_drft_clear -_drft_forward -_drft_init -_eatwhite -_floor0_exportbundle -_floor1_exportbundle -_gFreeList -_gNMRecBusy -_gNMRecPtr -_gSilenceOnes -_gSilenceTwos -_longLimit -_mapping0_exportbundle -_mdct_backward -_mdct_clear -_mdct_forward -_mdct_init -_muls -_mystrdup -_res0_free_info -_res0_free_look -_res0_inverse -_res0_look -_res0_unpack -_res1_class -_res1_inverse -_res2_inverse -_residue0_exportbundle -_residue1_exportbundle -_residue2_exportbundle -_scale -_shortLimit -_tabsel_123 -_F_Free -_F_Malloc -_F_ReAlloc -_F_memcmp -_F_memmove -_F_strcat -_F_strchr -_F_strcmp -_F_strcpy -_F_stricmp -_F_strlen -_F_strncat -_F_strncmp -_F_strncpy -_F_strnicmp -_F_strstr -_F_strupr -_F_tolower -_F_toupper diff --git a/indra/newview/fmodwrapper.cpp b/indra/newview/fmodwrapper.cpp deleted file mode 100644 index e74c4a1d7c..0000000000 --- a/indra/newview/fmodwrapper.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @file fmodwrapper.cpp - * @brief dummy source file for building a shared library to wrap libfmod.a - * - * $LicenseInfo:firstyear=2005&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$ - */ - -extern "C" -{ - void FMOD_System_Init(void); -} - -void* fmodwrapper(void) -{ - // When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly - // reference at least one symbol in the library. This seemed like the simplest way. - return (void*)&FMOD_System_Init; -} diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index 71b7e74c63..17f39aaa7e 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -8,17 +8,13 @@ #export LL_BAD_FMODEX_DRIVER=x ## - Avoids using any OpenAL audio driver. #export LL_BAD_OPENAL_DRIVER=x -## - Avoids using any FMOD audio driver. -#export LL_BAD_FMOD_DRIVER=x - +s ## - Avoids using the FMOD Ex PulseAudio audio driver. #export LL_BAD_FMOD_PULSEAUDIO=x ## - Avoids using the FMOD or FMOD Ex ALSA audio driver. #export LL_BAD_FMOD_ALSA=x ## - Avoids using the FMOD or FMOD Ex OSS audio driver. #export LL_BAD_FMOD_OSS=x -## - Avoids using the FMOD ESD audio driver. -#export LL_BAD_FMOD_ESD=x ## - Avoids the optional OpenGL extensions which have proven most problematic ## on some hardware. Disabling this option may cause BETTER PERFORMANCE but diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 37b119041f..557c213787 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1124,13 +1124,6 @@ class Linux_i686Manifest(LinuxManifest): print "tcmalloc files not found, skipping" pass - try: - self.path("libfmod-3.75.so") - pass - except: - print "Skipping libfmod-3.75.so - not found" - pass - try: self.path("libfmodex-*.so") self.path("libfmodex.so") -- cgit v1.2.3 From 8cf1d6af0d576ad460e441a45a455fbb45bcb9a7 Mon Sep 17 00:00:00 2001 From: Sovereign Engineer Date: Mon, 4 Feb 2013 08:24:35 -0500 Subject: fmodwrapper uneeded with fmodex --- indra/newview/CMakeLists.txt | 19 +------------------ indra/newview/viewer_manifest.py | 6 +----- 2 files changed, 2 insertions(+), 23 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 24a35bf8a2..b860b484dc 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1526,24 +1526,7 @@ endif (OPENAL) if (FMODEX) set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX") - - if (DARWIN) - set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) - add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) - set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY}) - set_target_properties( - fmodwrapper - PROPERTIES - BUILD_WITH_INSTALL_RPATH 1 - INSTALL_NAME_DIR "@executable_path/../Resources" - LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp" - ) - set(FMODWRAPPER_LIBRARY fmodwrapper) - target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) - else (DARWIN) - # fmodwrapper unnecessary on linux or windows - set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) - endif (DARWIN) + set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) endif (FMODEX) set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 557c213787..6333c65047 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -762,11 +762,7 @@ class DarwinManifest(ViewerManifest): 'SLVoice', ): self.path2basename(libdir, libfile) - - # FMOD for sound - libfile = "libfmodwrapper.dylib" - path_optional(os.path.join(self.args['configuration'], libfile), libfile) - + # our apps for app_bld_dir, app in (("mac_crash_logger", "mac-crash-logger.app"), ("mac_updater", "mac-updater.app"), -- cgit v1.2.3 From a05afe036cba1a85043db99e80045ae40e6a6d6c Mon Sep 17 00:00:00 2001 From: Sovereign Engineer Date: Mon, 4 Feb 2013 10:07:06 -0500 Subject: Removed small typo in linux wrapper script --- indra/newview/linux_tools/wrapper.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index 17f39aaa7e..ef3746c90b 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -8,7 +8,7 @@ #export LL_BAD_FMODEX_DRIVER=x ## - Avoids using any OpenAL audio driver. #export LL_BAD_OPENAL_DRIVER=x -s + ## - Avoids using the FMOD Ex PulseAudio audio driver. #export LL_BAD_FMOD_PULSEAUDIO=x ## - Avoids using the FMOD or FMOD Ex ALSA audio driver. -- cgit v1.2.3 From 3c5ac77a925e42b830aa58d12e8c20006ca9d76b Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Thu, 7 Feb 2013 09:02:51 -0800 Subject: For MAINT-2157 Codereview: DaveP --- indra/newview/llfeaturemanager.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index a4cadcd5dc..ddb9d3bc43 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -705,6 +705,20 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures) switch (level) { case 0: +#if LL_DARWIN + // This Mac-specific change is to insure that we force 'Basic Shaders' for all Mac + // systems which support them instead of falling back to fixed-function unnecessarily + // MAINT-2157 + // + if (gGLManager.mGLVersion < 2.1f) + { + maskFeatures("LowFixedFunction"); + } + else + { //same as low, but with "Basic Shaders" enabled + maskFeatures("Low"); + } +#else if (gGLManager.mGLVersion < 3.f || gGLManager.mIsIntel) { //only use fixed function by default if GL version < 3.0 or this is an intel graphics chip maskFeatures("LowFixedFunction"); @@ -713,6 +727,7 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures) { //same as low, but with "Basic Shaders" enabled maskFeatures("Low"); } +#endif break; case 1: maskFeatures("LowMid"); -- cgit v1.2.3 From b4dba269dc5e45992ba1e6126da0c01519c51f08 Mon Sep 17 00:00:00 2001 From: Graham Madarasz Date: Thu, 7 Feb 2013 09:14:53 -0800 Subject: For MAINT-1255 Code Review: DaveP --- indra/newview/app_settings/shaders/class1/deferred/waterF.glsl | 4 ++-- indra/newview/app_settings/shaders/class1/deferred/waterV.glsl | 2 +- indra/newview/app_settings/shaders/class1/environment/waterV.glsl | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index 3427d6db57..1ae006bc8a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl @@ -151,8 +151,8 @@ void main() //spec *= shadow; //color.rgb += spec * specular; - //color.rgb = atmosTransport(color.rgb); - //color.rgb = scaleSoftClip(color.rgb); + color.rgb = atmosTransport(color.rgb); + color.rgb = scaleSoftClip(color.rgb); //color.a = spec * sunAngle2; //wavef.z *= 0.1f; diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl index 9734acf005..ece34dcc4e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl @@ -85,7 +85,7 @@ void main() pos.w = 1.0; pos = modelview_matrix*pos; - calcAtmospherics(pos.xyz); + calcAtmospherics(view.xyz); //pass wave parameters to pixel shader vec2 bigWave = (v.xy) * vec2(0.04,0.04) + d1 * time * 0.055; diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl index f66ba1d2d9..fec8906fd0 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl @@ -81,8 +81,7 @@ void main() pos.w = 1.0; pos = modelview_matrix*pos; - calcAtmospherics(pos.xyz); - + calcAtmospherics(view.xyz); //pass wave parameters to pixel shader vec2 bigWave = (v.xy) * vec2(0.04,0.04) + d1 * time * 0.055; -- cgit v1.2.3 From 85af4c7b7169a0ea38aad5d3759fd36b8ff021f4 Mon Sep 17 00:00:00 2001 From: "Graham Madarasz (Graham)" Date: Tue, 12 Feb 2013 11:38:40 -0800 Subject: For MAINT-576 fix water shader visual issues in non-deferred Review: DaveP --- .../app_settings/shaders/class1/environment/waterV.glsl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl index fec8906fd0..5aff156eae 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl @@ -28,6 +28,7 @@ uniform mat4 modelview_projection_matrix; ATTRIBUTE vec3 position; + void calcAtmospherics(vec3 inPositionEye); uniform vec2 d1; @@ -48,35 +49,35 @@ float wave(vec2 v, float t, float f, vec2 d, float s) void main() { //transform vertex + vec4 pos = vec4(position.xyz, 1.0); mat4 modelViewProj = modelview_projection_matrix; vec4 oPosition; //get view vector vec3 oEyeVec; - oEyeVec.xyz = position.xyz-eyeVec; + oEyeVec.xyz = pos.xyz-eyeVec; float d = length(oEyeVec.xy); float ld = min(d, 2560.0); - vec3 lpos = position; - lpos.xy = eyeVec.xy + oEyeVec.xy/d*ld; + pos.xy = eyeVec.xy + oEyeVec.xy/d*ld; view.xyz = oEyeVec; d = clamp(ld/1536.0-0.5, 0.0, 1.0); d *= d; - oPosition = vec4(lpos, 1.0); + oPosition = vec4(position, 1.0); oPosition.z = mix(oPosition.z, max(eyeVec.z*0.75, 0.0), d); oPosition = modelViewProj * oPosition; + refCoord.xyz = oPosition.xyz + vec3(0,0,0.2); //get wave position parameter (create sweeping horizontal waves) - vec3 v = lpos; + vec3 v = pos.xyz; v.x += (cos(v.x*0.08/*+time*0.01*/)+sin(v.y*0.02))*6.0; //push position for further horizon effect. - vec4 pos; pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z); pos.w = 1.0; pos = modelview_matrix*pos; -- cgit v1.2.3 From 54e2d2b000f36b35ab5ab53cf3aeee922e54fbe3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 21 Feb 2013 01:13:24 -0500 Subject: MAINT-2389: Change viewer to Boost package without ucontext.h. In autobuild.xml, specify today's build of the Boost package that includes the Boost.Context library, and whose boost::dcoroutines library uses Boost.Context exclusively instead of its previous context-switching underpinnings (source of the ucontext.h dependency). Add BOOST_CONTEXT_LIBRARY to Boost.cmake and Copy3rdPartyLibs.cmake. Link it with the viewer and with the lllogin.cpp test executable. Track new Boost package convention that our (early, unofficial) Boost.Coroutine library is now accessed as boost/dcoroutine/etc.h and boost::dcoroutines::etc. Remove #include from llviewerprecompiledheaders.h and lllogin.cpp: old rule that Boost.Coroutine header must be #included before anything else that might use ucontext.h is gone now that we no longer depend on ucontext.h. In fact remove -D_XOPEN_SOURCE in 00-Common.cmake because that was inserted specifically to work around a known problem with the ucontext.h facilities. --- indra/newview/CMakeLists.txt | 1 + indra/newview/llviewerprecompiledheaders.h | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e93d73ad0e..fe7ceaeba6 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1823,6 +1823,7 @@ target_link_libraries(${VIEWER_BINARY_NAME} ${viewer_LIBRARIES} ${BOOST_PROGRAM_OPTIONS_LIBRARY} ${BOOST_REGEX_LIBRARY} + ${BOOST_CONTEXT_LIBRARY} ${DBUSGLIB_LIBRARIES} ${OPENGL_LIBRARIES} ${FMODWRAPPER_LIBRARY} # must come after LLAudio diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index 0316f79973..a565005f30 100644 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h @@ -33,8 +33,6 @@ // in viewer. // It is used to precompile headers for improved build speed. -#include - #include "linden_common.h" // Work around stupid Microsoft STL warning -- cgit v1.2.3 From 73a2d11d4ef3d118fb1a04dd76fc3abed1ebfffa Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 25 Feb 2013 12:49:08 -0500 Subject: MAINT-2389: add libboost_context-m5.so.* to Linux package. Irritating how many different places we have to touch to add a library... --- indra/newview/viewer_manifest.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index e7108141ee..4c95c70854 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1067,12 +1067,13 @@ class Linux_i686Manifest(LinuxManifest): self.path("libaprutil-1.so") self.path("libaprutil-1.so.0") self.path("libaprutil-1.so.0.4.1") + self.path("libboost_context-mt.so.*") + self.path("libboost_filesystem-mt.so.*") self.path("libboost_program_options-mt.so.*") self.path("libboost_regex-mt.so.*") - self.path("libboost_thread-mt.so.*") - self.path("libboost_filesystem-mt.so.*") self.path("libboost_signals-mt.so.*") self.path("libboost_system-mt.so.*") + self.path("libboost_thread-mt.so.*") self.path("libbreakpad_client.so.0.0.0") self.path("libbreakpad_client.so.0") self.path("libbreakpad_client.so") -- cgit v1.2.3 From ace5a9bf6c087a70d5183371d1aa988a1ee17a2a Mon Sep 17 00:00:00 2001 From: eli Date: Mon, 25 Mar 2013 14:41:42 -0700 Subject: sync with viewer-development --- .../skins/default/xui/da/menu_im_well_button.xml | 4 - .../skins/default/xui/da/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/de/floater_chat_bar.xml | 2 +- .../skins/default/xui/de/menu_im_well_button.xml | 4 - .../skins/default/xui/de/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/en/floater_camera.xml | 4 +- .../skins/default/xui/en/floater_chat_bar.xml | 85 -- .../default/xui/en/floater_conversation_log.xml | 84 ++ .../xui/en/floater_conversation_preview.xml | 64 ++ .../skins/default/xui/en/floater_destinations.xml | 6 +- .../skins/default/xui/en/floater_im_container.xml | 203 ++++- .../skins/default/xui/en/floater_im_session.xml | 418 +++++++-- .../skins/default/xui/en/floater_incoming_call.xml | 58 +- .../skins/default/xui/en/floater_moveview.xml | 4 +- .../default/xui/en/floater_pathfinding_console.xml | 2 +- .../skins/default/xui/en/floater_people.xml | 14 +- .../default/xui/en/floater_voice_chat_volume.xml | 48 ++ .../default/xui/en/floater_voice_controls.xml | 155 ---- .../skins/default/xui/en/floater_voice_effect.xml | 3 +- .../skins/default/xui/en/floater_voice_volume.xml | 59 ++ .../skins/default/xui/en/inspect_avatar.xml | 100 +-- .../newview/skins/default/xui/en/menu_cof_gear.xml | 2 +- .../skins/default/xui/en/menu_conversation.xml | 203 +++++ .../default/xui/en/menu_conversation_log_gear.xml | 142 ++++ .../default/xui/en/menu_conversation_log_view.xml | 45 + .../skins/default/xui/en/menu_group_plus.xml | 4 +- .../skins/default/xui/en/menu_im_conversation.xml | 101 +++ .../default/xui/en/menu_im_session_showmodes.xml | 49 ++ .../skins/default/xui/en/menu_im_well_button.xml | 16 - .../default/xui/en/menu_inspect_avatar_gear.xml | 143 ---- .../default/xui/en/menu_inspect_self_gear.xml | 252 ------ .../skins/default/xui/en/menu_object_icon.xml | 18 + .../skins/default/xui/en/menu_participant_view.xml | 112 +++ .../default/xui/en/menu_people_blocked_gear.xml | 26 + .../default/xui/en/menu_people_blocked_plus.xml | 20 + .../default/xui/en/menu_people_blocked_view.xml | 26 + .../default/xui/en/menu_people_friends_view.xml | 51 ++ .../xui/en/menu_people_friends_view_sort.xml | 47 -- .../skins/default/xui/en/menu_people_groups.xml | 27 +- .../default/xui/en/menu_people_groups_view.xml | 17 + .../xui/en/menu_people_groups_view_sort.xml | 26 - .../skins/default/xui/en/menu_people_nearby.xml | 99 ++- .../xui/en/menu_people_nearby_multiselect.xml | 14 +- .../default/xui/en/menu_people_nearby_view.xml | 53 ++ .../xui/en/menu_people_nearby_view_sort.xml | 57 -- .../default/xui/en/menu_people_recent_view.xml | 35 + .../xui/en/menu_people_recent_view_sort.xml | 39 - .../skins/default/xui/en/menu_url_agent.xml | 20 +- .../skins/default/xui/en/menu_url_objectim.xml | 2 +- indra/newview/skins/default/xui/en/menu_viewer.xml | 165 +++- .../newview/skins/default/xui/en/notifications.xml | 165 +++- .../skins/default/xui/en/panel_activeim_row.xml | 97 --- .../default/xui/en/panel_adhoc_control_panel.xml | 95 --- .../default/xui/en/panel_avatar_list_item.xml | 1 + .../default/xui/en/panel_block_list_sidetray.xml | 163 ++-- .../default/xui/en/panel_blocked_list_item.xml | 71 ++ .../skins/default/xui/en/panel_bottomtray_lite.xml | 2 +- .../skins/default/xui/en/panel_chiclet_bar.xml | 48 -- .../xui/en/panel_conversation_list_item.xml | 98 +++ .../xui/en/panel_conversation_log_list_item.xml | 107 +++ .../default/xui/en/panel_group_control_panel.xml | 109 --- .../skins/default/xui/en/panel_group_list_item.xml | 1 + .../default/xui/en/panel_im_control_panel.xml | 166 ---- .../skins/default/xui/en/panel_inbox_inventory.xml | 2 +- .../skins/default/xui/en/panel_landmarks.xml | 16 +- .../skins/default/xui/en/panel_nearby_chat.xml | 22 +- .../skins/default/xui/en/panel_nearby_chat_bar.xml | 2 +- .../default/xui/en/panel_outbox_inventory.xml | 25 +- .../newview/skins/default/xui/en/panel_people.xml | 929 +++++++++------------ .../default/xui/en/panel_preferences_chat.xml | 693 ++++++++++----- .../default/xui/en/panel_preferences_colors.xml | 4 +- .../default/xui/en/panel_preferences_general.xml | 6 +- .../default/xui/en/panel_preferences_graphics1.xml | 15 +- .../default/xui/en/panel_preferences_privacy.xml | 226 ++--- indra/newview/skins/default/xui/en/strings.xml | 42 +- .../skins/default/xui/en/widgets/chat_editor.xml | 4 + .../default/xui/en/widgets/chiclet_im_adhoc.xml | 55 -- .../default/xui/en/widgets/chiclet_im_group.xml | 56 -- .../default/xui/en/widgets/chiclet_im_p2p.xml | 56 -- .../en/widgets/conversation_view_participant.xml | 42 + .../xui/en/widgets/conversation_view_session.xml | 16 + .../default/xui/en/widgets/folder_view_item.xml | 8 +- .../xui/en/widgets/inbox_folder_view_folder.xml | 8 +- .../xui/en/widgets/inbox_inventory_panel.xml | 3 +- .../xui/en/widgets/outbox_folder_view_folder.xml | 9 - .../xui/en/widgets/outbox_inventory_panel.xml | 2 - .../newview/skins/default/xui/en/widgets/text.xml | 1 + .../skins/default/xui/en/widgets/toolbar.xml | 12 +- .../skins/default/xui/es/floater_chat_bar.xml | 2 +- .../skins/default/xui/es/menu_im_well_button.xml | 4 - .../skins/default/xui/es/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/fr/floater_chat_bar.xml | 2 +- .../skins/default/xui/fr/menu_im_well_button.xml | 4 - .../skins/default/xui/fr/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/it/floater_chat_bar.xml | 2 +- .../skins/default/xui/it/menu_im_well_button.xml | 4 - .../skins/default/xui/it/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/ja/floater_chat_bar.xml | 2 +- .../skins/default/xui/ja/menu_im_well_button.xml | 4 - .../skins/default/xui/ja/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/pl/menu_im_well_button.xml | 4 - .../skins/default/xui/pl/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/pt/floater_chat_bar.xml | 2 +- .../skins/default/xui/pt/menu_im_well_button.xml | 4 - .../skins/default/xui/pt/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/ru/floater_chat_bar.xml | 2 +- .../skins/default/xui/ru/menu_im_well_button.xml | 4 - .../skins/default/xui/ru/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/tr/floater_chat_bar.xml | 2 +- .../skins/default/xui/tr/menu_im_well_button.xml | 4 - .../skins/default/xui/tr/panel_nearby_chat_bar.xml | 2 +- .../skins/default/xui/zh/menu_im_well_button.xml | 4 - .../skins/default/xui/zh/panel_nearby_chat_bar.xml | 2 +- 113 files changed, 3608 insertions(+), 2969 deletions(-) delete mode 100644 indra/newview/skins/default/xui/da/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/de/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_chat_bar.xml create mode 100644 indra/newview/skins/default/xui/en/floater_conversation_log.xml create mode 100644 indra/newview/skins/default/xui/en/floater_conversation_preview.xml create mode 100644 indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml delete mode 100644 indra/newview/skins/default/xui/en/floater_voice_controls.xml create mode 100644 indra/newview/skins/default/xui/en/floater_voice_volume.xml create mode 100644 indra/newview/skins/default/xui/en/menu_conversation.xml create mode 100644 indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml create mode 100644 indra/newview/skins/default/xui/en/menu_conversation_log_view.xml create mode 100644 indra/newview/skins/default/xui/en/menu_im_conversation.xml create mode 100644 indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml create mode 100644 indra/newview/skins/default/xui/en/menu_participant_view.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_blocked_view.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_friends_view.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_groups_view.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_nearby_view.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml create mode 100644 indra/newview/skins/default/xui/en/menu_people_recent_view.xml delete mode 100644 indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml delete mode 100644 indra/newview/skins/default/xui/en/panel_activeim_row.xml delete mode 100644 indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml create mode 100644 indra/newview/skins/default/xui/en/panel_blocked_list_item.xml create mode 100644 indra/newview/skins/default/xui/en/panel_conversation_list_item.xml create mode 100644 indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml delete mode 100644 indra/newview/skins/default/xui/en/panel_group_control_panel.xml delete mode 100644 indra/newview/skins/default/xui/en/panel_im_control_panel.xml create mode 100644 indra/newview/skins/default/xui/en/widgets/chat_editor.xml delete mode 100644 indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml delete mode 100644 indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml delete mode 100644 indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml create mode 100644 indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml create mode 100644 indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml delete mode 100644 indra/newview/skins/default/xui/en/widgets/outbox_folder_view_folder.xml delete mode 100644 indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml delete mode 100644 indra/newview/skins/default/xui/es/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/fr/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/it/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/ja/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/pl/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/pt/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/ru/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/tr/menu_im_well_button.xml delete mode 100644 indra/newview/skins/default/xui/zh/menu_im_well_button.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/da/menu_im_well_button.xml b/indra/newview/skins/default/xui/da/menu_im_well_button.xml deleted file mode 100644 index 4889230919..0000000000 --- a/indra/newview/skins/default/xui/da/menu_im_well_button.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml index 949cbcbd7b..eb104201f8 100644 --- a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml @@ -1,5 +1,5 @@ - + - - diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml new file mode 100644 index 0000000000..19a4cbc119 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_conversation_log.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml new file mode 100644 index 0000000000..764b9d8385 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml @@ -0,0 +1,64 @@ + + + + CONVERSATION: [NAME] + + + + + + + + + diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml index 39aa8e07bb..94ebaa9cb2 100644 --- a/indra/newview/skins/default/xui/en/floater_destinations.xml +++ b/indra/newview/skins/default/xui/en/floater_destinations.xml @@ -1,6 +1,6 @@ + width="550"> diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index e123de46c2..65f623a47e 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -1,49 +1,180 @@ - + + + - - - - - + left="0" + name="conversations_stack" + orientation="horizontal" + right="-1" + top="0"> + + + + + - - + top="31" + right="-1"/> diff --git a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml new file mode 100644 index 0000000000..752321b949 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml @@ -0,0 +1,71 @@ + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml index f4722b05d6..27a27473d8 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml @@ -46,7 +46,7 @@ follows="left|right" top="4" width="310" - name="chat_bar" + name="nearby_chat" mouse_opaque="false"/> - - - - - - + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml new file mode 100644 index 0000000000..78d4c174d2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + right="-1" + top_pad="0"> + right="-1" + top="4" /> + right="-1" + user_resize="true"> + right="-1" + top="2" /> - - - - - + + + + right="-1" + top="0"> + + + + + + + + right="-2" + top_pad="2"> - - - - - - - - - + + + + + + - - - - + - - + + + + + Location: + + + + + + + + + diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 2b22f0d6e3..9e825fe516 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml @@ -362,7 +362,7 @@ follows="left|top" height="16" increment="0.01" - initial_value="0.8" + initial_value="1.0" layout="topleft" label_width="115" label="Active:" @@ -380,7 +380,7 @@ follows="left|top" height="16" increment="0.01" - initial_value="0.5" + initial_value="0.95" layout="topleft" label_width="115" label="Inactive:" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 24882988b0..ea0f7d8593 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -409,10 +409,10 @@ name="text_box3" top_pad="3" width="240"> - Busy mode response: + Do Not Disturb response: log_in_to_change diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 7eb0fac2be..cd243d40a4 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -147,11 +147,24 @@ height="12" layout="topleft" left_delta="87" - name="ShadersPrefText3" + name="ShadersPrefText2" top_delta="0" width="80"> Mid + + High + - - log in to change - - - - (Locations, images, web, search history) - - - - + border="true" + follows="left|top|right|bottom" + height="408" + label="Communication" + layout="topleft" + left="102" + name="im" + top="1" + width="517"> + + + log in to change + + + + + + (Locations, images, web, search history) + + + + + + - - Chat Logs: - - - - - - - - - Location of logs: - - - +