diff --git a/.hgtags b/.hgtags
index a4fb6ce9f8..c1b268bf2b 100755
--- a/.hgtags
+++ b/.hgtags
@@ -553,3 +553,5 @@ ab2ec5c5423b277d23fd0511ce50c15123ff2e03 6.2.3-release
67297f9902857e357570c44722ad84de3aff974e 6.2.4-release
9777aec6dc4a30a24537297ac040861ce16b82ae 6.3.0-release
ece699718f163921717bb95a6131e94af4c4138f 6.3.1-release
+07f5d5bc9faebb45695853d40a9549773db816c0 6.3.2-release
+d9a4bd15e2c852953d6c8e84d6f3b7ca442c0e7f 6.3.3-release
diff --git a/autobuild.xml b/autobuild.xml
index 5f072512c1..88db33e317 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2918,7 +2918,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
license
Mixed
license_file
- LICENSES/slvoice.txt
+ LICENSES/vivox_licenses.txt
name
slvoice
platforms
@@ -2940,9 +2940,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
name
darwin64
@@ -2976,9 +2976,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
name
windows
@@ -2988,16 +2988,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
name
windows64
version
- 4.9.0002.30313.517593
+ 4.10.0000.32327.5fc3fe7c.531581
tut
vlc-bin
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 58d711470e..d401620b2c 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1448,6 +1448,7 @@ Tonya Souther
STORM-1905
BUG-3875
BUG-3968
+ OPEN-345
Torben Trautman
TouchaHoney Perhaps
TraductoresAnonimos Alter
diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake
index 93461cea95..4314cca33d 100644
--- a/indra/cmake/BuildPackagesInfo.cmake
+++ b/indra/cmake/BuildPackagesInfo.cmake
@@ -8,7 +8,7 @@ include(Python)
# building in an IDE, it probably isn't. Set it explicitly using
# run_build_test.py.
add_custom_command(OUTPUT packages-info.txt
- COMMENT Generating packages-info.txt for the about box
+ COMMENT "Generating packages-info.txt for the about box"
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/../autobuild.xml
DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py
${CMAKE_SOURCE_DIR}/../autobuild.xml
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index dde53835fb..c73a1fdb47 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -17,17 +17,16 @@ if(WINDOWS)
#*******************************
# VIVOX - *NOTE: no debug version
- set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
- set(vivox_files
- SLVoice.exe
- )
+ set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+ set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}")
+ set(slvoice_files SLVoice.exe )
if (ADDRESS_SIZE EQUAL 64)
- list(APPEND vivox_files
+ list(APPEND vivox_libs
vivoxsdk_x64.dll
ortp_x64.dll
)
else (ADDRESS_SIZE EQUAL 64)
- list(APPEND vivox_files
+ list(APPEND vivox_libs
vivoxsdk.dll
ortp.dll
)
@@ -169,11 +168,10 @@ elseif(DARWIN)
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}/Release/Resources")
- set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
- set(vivox_files
- SLVoice
+ set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+ set(slvoice_files SLVoice)
+ set(vivox_libs
libortp.dylib
- libvivoxplatform.dylib
libvivoxsdk.dylib
)
set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
@@ -206,15 +204,15 @@ elseif(LINUX)
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}")
- set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
- set(vivox_files
+ set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+ set(vivox_libs
libsndfile.so.1
libortp.so
libvivoxoal.so.1
- libvivoxplatform.so
libvivoxsdk.so
- SLVoice
- )
+ )
+ set(slvoice_files SLVoice)
+
# *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
# or ARCH_PREBUILT_DIRS
set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
@@ -251,8 +249,8 @@ elseif(LINUX)
else(WINDOWS)
message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
- set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
- set(vivox_files "")
+ set(vivox_lib_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
+ set(vivox_libs "")
# *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
# or ARCH_PREBUILT_DIRS
set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug")
@@ -275,39 +273,36 @@ endif(WINDOWS)
################################################################
copy_if_different(
- ${vivox_src_dir}
+ ${vivox_lib_dir}
"${SHARED_LIB_STAGING_DIR_DEBUG}"
out_targets
- ${vivox_files}
+ ${vivox_libs}
)
set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different(
- ${vivox_src_dir}
+ ${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}"
out_targets
- ${vivox_files}
+ ${slvoice_files}
)
+copy_if_different(
+ ${vivox_lib_dir}
+ "${SHARED_LIB_STAGING_DIR_RELEASE}"
+ out_targets
+ ${vivox_libs}
+ )
+
set(third_party_targets ${third_party_targets} ${out_targets})
copy_if_different(
- ${vivox_src_dir}
+ ${vivox_lib_dir}
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
out_targets
- ${vivox_files}
+ ${vivox_libs}
)
set(third_party_targets ${third_party_targets} ${out_targets})
-
-
-#copy_if_different(
-# ${debug_src_dir}
-# "${SHARED_LIB_STAGING_DIR_DEBUG}"
-# out_targets
-# ${debug_files}
-# )
-#set(third_party_targets ${third_party_targets} ${out_targets})
-
copy_if_different(
${release_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}"
diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
index 2e6cf53912..4bc70b2ca4 100755
--- a/indra/lib/python/indra/util/llmanifest.py
+++ b/indra/lib/python/indra/util/llmanifest.py
@@ -27,6 +27,7 @@ THE SOFTWARE.
$/LicenseInfo$
"""
+from collections import namedtuple, defaultdict
import commands
import errno
import filecmp
@@ -312,6 +313,8 @@ class LLManifestRegistry(type):
if match:
cls.manifests[match.group(1).lower()] = cls
+MissingFile = namedtuple("MissingFile", ("pattern", "tried"))
+
class LLManifest(object):
__metaclass__ = LLManifestRegistry
manifests = {}
@@ -333,7 +336,8 @@ class LLManifest(object):
self.dst_prefix = [args['dest']]
self.created_paths = []
self.package_name = "Unknown"
-
+ self.missing = []
+
def default_channel(self):
return self.args.get('channel', None) == RELEASE_CHANNEL
@@ -592,6 +596,40 @@ class LLManifest(object):
def package_action(self, src, dst):
pass
+ def finish(self):
+ """
+ generic finish, always called before the ${action}_finish() methods
+ """
+ # Collecting MissingFile instances in self.missing, and checking that
+ # here, is intended to minimize the number of (potentially lengthy)
+ # build cycles a developer must run in order to fix missing-files
+ # errors. The manifest processing is necessarily the last step in a
+ # build, and if we only caught a single missing file error per run,
+ # the developer would need to run a build for each additional missing-
+ # file error until all were resolved. This way permits the developer
+ # to resolve them all at once.
+ if self.missing:
+ print '*' * 72
+ print "Missing files:"
+ # Instead of just dumping each missing file and all the places we
+ # looked for it, group by common sets of places we looked. Use a
+ # set to store the 'tried' directories, to avoid mismatches due to
+ # reordering -- but since we intend to use the set of 'tried'
+ # directories as a dict key, it must be a frozenset.
+ organize = defaultdict(set)
+ for missingfile in self.missing:
+ organize[frozenset(missingfile.tried)].add(missingfile.pattern)
+ # Now dump all the patterns sought in each group of 'tried'
+ # directories.
+ for tried, patterns in organize.items():
+ print " Could not find in:"
+ for dir in sorted(tried):
+ print " %s" % dir
+ for pattern in sorted(patterns):
+ print " %s" % pattern
+ print '*' * 72
+ raise MissingError('%s patterns could not be found' % len(self.missing))
+
def copy_finish(self):
pass
@@ -825,17 +863,23 @@ class LLManifest(object):
return count
try_prefixes = [self.get_src_prefix(), self.get_artwork_prefix(), self.get_build_prefix()]
- tried=[]
- count=0
- while not count and try_prefixes:
- pfx = try_prefixes.pop(0)
+ for pfx in try_prefixes:
try:
count = try_path(os.path.join(pfx, src))
except MissingError:
- tried.append(pfx)
- if not try_prefixes:
- # no more prefixes left to try
- print "unable to find '%s'; looked in:\n %s" % (src, '\n '.join(tried))
+ # if we produce MissingError, just try the next prefix
+ continue
+ # If we actually found nonzero files, stop looking
+ if count:
+ break
+ else:
+ # no more prefixes left to try
+ print("\nunable to find '%s'; looked in:\n %s" % (src, '\n '.join(try_prefixes)))
+ self.missing.append(MissingFile(pattern=src, tried=try_prefixes))
+ # At this point 'count' might never have been successfully
+ # assigned! Even if it was, though, we can be sure it is 0.
+ return 0
+
print "%d files" % count
# Let caller check whether we processed as many files as expected. In
@@ -846,6 +890,8 @@ class LLManifest(object):
self.actions = actions
self.construct()
# perform finish actions
+ # generic finish first
+ self.finish()
for action in self.actions:
methodname = action + "_finish"
method = getattr(self, methodname, None)
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 2024d707da..d463fc9d65 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -199,14 +199,10 @@ private:
friend BlockTimer timeThisBlock(BlockTimerStatHandle&);
BlockTimer(BlockTimerStatHandle& timer);
-#if !defined(MSC_VER) || MSC_VER < 1700
- // Visual Studio 2010 has a bug where capturing an object returned by value
- // into a local reference requires access to the copy constructor at the call site.
- // This appears to be fixed in 2012.
-public:
-#endif
+
// no-copy
- BlockTimer(const BlockTimer& other) {};
+ BlockTimer(const BlockTimer& other);
+ BlockTimer& operator=(const BlockTimer& other);
private:
U64 mStartTime;
diff --git a/indra/llcommon/llmortician.cpp b/indra/llcommon/llmortician.cpp
index 287f096eae..93c7d520f2 100644
--- a/indra/llcommon/llmortician.cpp
+++ b/indra/llcommon/llmortician.cpp
@@ -37,6 +37,42 @@ LLMortician::~LLMortician()
sGraveyard.remove(this);
}
+U32 LLMortician::logClass(std::stringstream &str)
+{
+ U32 size = sGraveyard.size();
+ str << "Mortician graveyard count: " << size;
+ str << " Zealous: " << (sDestroyImmediate ? "True" : "False");
+ if (size == 0)
+ {
+ return size;
+ }
+ str << " Output:\n";
+ std::list::iterator iter = sGraveyard.begin();
+ std::list::iterator end = sGraveyard.end();
+ while (iter!=end)
+ {
+ LLMortician* dead = *iter;
+ iter++;
+ // Be as detailed and safe as possible to figure out issues
+ str << "Pointer: " << dead;
+ if (dead)
+ {
+ try
+ {
+ str << " Is dead: " << (dead->isDead() ? "True" : "False");
+ str << " Name: " << typeid(*dead).name();
+ }
+ catch (...)
+ {
+
+ }
+ }
+ str << "\n";
+ }
+ str << "--------------------------------------------";
+ return size;
+}
+
void LLMortician::updateClass()
{
while (!sGraveyard.empty())
diff --git a/indra/llcommon/llmortician.h b/indra/llcommon/llmortician.h
index 9517e2db5e..41cb49fab1 100644
--- a/indra/llcommon/llmortician.h
+++ b/indra/llcommon/llmortician.h
@@ -34,6 +34,8 @@ class LL_COMMON_API LLMortician
{
public:
LLMortician() { mIsDead = FALSE; }
+ static U32 graveyardCount() { return sGraveyard.size(); };
+ static U32 logClass(std::stringstream &str);
static void updateClass();
virtual ~LLMortician();
void die();
diff --git a/indra/llui/lltransutil.cpp b/indra/llui/lltransutil.cpp
index b1534bb5e4..5da722a72b 100644
--- a/indra/llui/lltransutil.cpp
+++ b/indra/llui/lltransutil.cpp
@@ -44,6 +44,7 @@ bool LLTransUtil::parseStrings(const std::string& xml_filename, const std::setdumpCurrentDirectories(LLError::LEVEL_WARN);
LL_ERRS() << "Couldn't load string table " << xml_filename << ". Please reinstall viewer from https://secondlife.com/support/downloads/ and contact https://support.secondlife.com if issue persists after reinstall." << LL_ENDL;
return false;
}
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
index 18836e54b0..2076ce334e 100644
--- a/indra/llvfs/lldir.cpp
+++ b/indra/llvfs/lldir.cpp
@@ -1033,24 +1033,24 @@ bool LLDir::setCacheDir(const std::string &path)
}
}
-void LLDir::dumpCurrentDirectories()
+void LLDir::dumpCurrentDirectories(LLError::ELevel level)
{
- LL_DEBUGS("AppInit","Directories") << "Current Directories:" << LL_ENDL;
+ LL_VLOGS(level, "AppInit","Directories") << "Current Directories:" << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " CurPath: " << getCurPath() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " AppName: " << getAppName() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " ExecutableFilename: " << getExecutableFilename() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " ExecutableDir: " << getExecutableDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " ExecutablePathAndName: " << getExecutablePathAndName() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " WorkingDir: " << getWorkingDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " AppRODataDir: " << getAppRODataDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " OSUserDir: " << getOSUserDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " OSUserAppDir: " << getOSUserAppDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " LindenUserDir: " << getLindenUserDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " TempDir: " << getTempDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " CAFile: " << getCAFile() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " SkinBaseDir: " << getSkinBaseDir() << LL_ENDL;
- LL_DEBUGS("AppInit","Directories") << " SkinDir: " << getSkinDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " CurPath: " << getCurPath() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " AppName: " << getAppName() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " ExecutableFilename: " << getExecutableFilename() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " ExecutableDir: " << getExecutableDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " ExecutablePathAndName: " << getExecutablePathAndName() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " WorkingDir: " << getWorkingDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " AppRODataDir: " << getAppRODataDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " OSUserDir: " << getOSUserDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " OSUserAppDir: " << getOSUserAppDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " LindenUserDir: " << getLindenUserDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " TempDir: " << getTempDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " CAFile: " << getCAFile() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " SkinBaseDir: " << getSkinBaseDir() << LL_ENDL;
+ LL_VLOGS(level, "AppInit", "Directories") << " SkinDir: " << getSkinDir() << LL_ENDL;
}
void LLDir::append(std::string& destpath, const std::string& name) const
diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h
index e233413a7f..38e204ef04 100644
--- a/indra/llvfs/lldir.h
+++ b/indra/llvfs/lldir.h
@@ -194,7 +194,7 @@ class LLDir
virtual bool setCacheDir(const std::string &path);
virtual void updatePerAccountChatLogsDir();
- virtual void dumpCurrentDirectories();
+ virtual void dumpCurrentDirectories(LLError::ELevel level = LLError::LEVEL_DEBUG);
// Utility routine
std::string buildSLOSCacheDir() const;
diff --git a/indra/llwindow/llappdelegate-objc.h b/indra/llwindow/llappdelegate-objc.h
index 6daf1ac55b..0b38647b4a 100644
--- a/indra/llwindow/llappdelegate-objc.h
+++ b/indra/llwindow/llappdelegate-objc.h
@@ -46,3 +46,6 @@
- (void) languageUpdated;
- (bool) romanScript;
@end
+
+@interface LLApplication : NSApplication
+@end
diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm
index 33eed7227a..1990499459 100644
--- a/indra/llwindow/llopenglview-objc.mm
+++ b/indra/llwindow/llopenglview-objc.mm
@@ -509,15 +509,6 @@ attributedStringInfo getSegments(NSAttributedString *str)
{
[[self inputContext] handleEvent:theEvent];
}
-
- // OS X intentionally does not send us key-up information on cmd-key combinations.
- // This behaviour is not a bug, and only applies to cmd-combinations (no others).
- // Since SL assumes we receive those, we fake it here.
- if (mModifiers & NSCommandKeyMask && !mHasMarkedText)
- {
- eventData.mKeyEvent = NativeKeyEventData::KEYUP;
- callKeyUp(&eventData, [theEvent keyCode], mModifiers);
- }
}
- (void)flagsChanged:(NSEvent *)theEvent
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 447994d83e..17095d8fcd 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -2121,7 +2121,7 @@ if (DARWIN)
set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}")
set(MACOSX_BUNDLE_COPYRIGHT "Copyright © Linden Research, Inc. 2019")
set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "SecondLife.nib")
- set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
+ set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLApplication")
# https://blog.kitware.com/upcoming-in-cmake-2-8-12-osx-rpath-support/
set(CMAKE_MACOSX_RPATH 1)
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index 91e4a9f262..8ac3c44511 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-6.3.2
+6.3.4
diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi
index fd4d340816..ea680f08e4 100644
Binary files a/indra/newview/installers/windows/lang_en-us.nsi and b/indra/newview/installers/windows/lang_en-us.nsi differ
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 8b2d591da5..31b8b90518 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3710,6 +3710,23 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )
return TRUE;
}
+bool LLAgent::isInHomeRegion()
+{
+ if(!mHaveHomePosition)
+ {
+ return false;
+ }
+ if (!getRegion())
+ {
+ return false;
+ }
+ if (getRegion()->getHandle() != mHomeRegionHandle)
+ {
+ return false;
+ }
+ return true;
+}
+
void LLAgent::clearVisualParams(void *data)
{
if (isAgentAvatarValid())
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index ea6f68c482..5ba1083d8e 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -233,6 +233,8 @@ public:
void setStartPosition(U32 location_id); // Marks current location as start, sends information to servers
void setHomePosRegion(const U64& region_handle, const LLVector3& pos_region);
BOOL getHomePosGlobal(LLVector3d* pos_global);
+ bool isInHomeRegion();
+
private:
void setStartPositionSuccess(const LLSD &result);
diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm
index 1d55537427..47fde299c7 100644
--- a/indra/newview/llappdelegate-objc.mm
+++ b/indra/newview/llappdelegate-objc.mm
@@ -342,3 +342,16 @@ struct AttachmentInfo
#endif // LL_BUGSPLAT
@end
+
+@implementation LLApplication
+
+- (void)sendEvent:(NSEvent *)event
+{
+ [super sendEvent:event];
+ if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
+ {
+ [[self keyWindow] sendEvent:event];
+ }
+}
+
+@end
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index be5611899a..c8dcbb87c1 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2882,6 +2882,7 @@ void LLAppViewer::initStrings()
if (strings_path_full.empty() || !LLFile::isfile(strings_path_full))
{
// initial check to make sure files are there failed
+ gDirUtilp->dumpCurrentDirectories(LLError::LEVEL_WARN);
LL_ERRS() << "Viewer failed to find localization and UI files. Please reinstall viewer from https://secondlife.com/support/downloads/ and contact https://support.secondlife.com if issue persists after reinstall." << LL_ENDL;
}
LLTransUtil::parseStrings(strings_file, default_trans_args);
@@ -4504,10 +4505,37 @@ void LLAppViewer::saveFinalSnapshot()
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
- snap_filename += SCREEN_LAST_FILENAME;
+ snap_filename += LLStartUp::getScreenLastFilename();
// use full pixel dimensions of viewer window (not post-scale dimensions)
- gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, TRUE);
+ gViewerWindow->saveSnapshot(snap_filename,
+ gViewerWindow->getWindowWidthRaw(),
+ gViewerWindow->getWindowHeightRaw(),
+ FALSE,
+ TRUE,
+ LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
+ LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
mSavedFinalSnapshot = TRUE;
+
+ if (gAgent.isInHomeRegion())
+ {
+ LLVector3d home;
+ if (gAgent.getHomePosGlobal(&home) && dist_vec(home, gAgent.getPositionGlobal()) < 10)
+ {
+ // We are at home position or close to it, see if we need to create home screenshot
+ // Notes:
+ // 1. It might be beneficial to also replace home if file is too old
+ // 2. This is far from best way/place to update screenshot since location might be not fully loaded,
+ // but we don't have many options
+ std::string snap_home = gDirUtilp->getLindenUserDir();
+ snap_home += gDirUtilp->getDirDelimiter();
+ snap_home += LLStartUp::getScreenHomeFilename();
+ if (!gDirUtilp->fileExists(snap_home))
+ {
+ // We are at home position yet no home image exist, fix it
+ LLFile::copy(snap_filename, snap_home);
+ }
+ }
+ }
}
}
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index fff2653c98..d208e135bb 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -312,12 +312,12 @@ void ll_nvapi_init(NvDRSSessionHandle hSession)
#if DEBUGGING_SEH_FILTER
# define WINMAIN DebuggingWinMain
#else
-# define WINMAIN WinMain
+# define WINMAIN wWinMain
#endif
int APIENTRY WINMAIN(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
+ PWSTR pCmdLine,
int nCmdShow)
{
const S32 MAX_HEAPS = 255;
@@ -356,8 +356,8 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
// *FIX: global
gIconResource = MAKEINTRESOURCE(IDI_LL_ICON);
- LLAppViewerWin32* viewer_app_ptr = new LLAppViewerWin32(lpCmdLine);
-
+ LLAppViewerWin32* viewer_app_ptr = new LLAppViewerWin32(ll_convert_wide_to_string(pCmdLine).c_str());
+
gOldTerminateHandler = std::set_terminate(exceptionTerminateHandler);
viewer_app_ptr->setErrorHandler(LLAppViewer::handleViewerCrash);
@@ -469,9 +469,9 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
// in a method that uses object destructors. Go figure.
// This winmain just calls the real winmain inside __try.
// The __except calls our exception filter function. For debugging purposes.
-int APIENTRY WinMain(HINSTANCE hInstance,
+int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
+ PWSTR lpCmdLine,
int nCmdShow)
{
__try
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index b47e0930a3..1caefd58ab 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -502,13 +502,14 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel
{
mAttachments->sort();
mAttachments->notify(REARRANGE); //notifying the parent about the list's size change (cause items were added with rearrange=false)
- setAttachmentsTitle();
}
else
{
mAttachments->setNoItemsCommentText(LLTrans::getString("no_attachments"));
}
+ setAttachmentsTitle();
+
if (mBodyParts->size())
{
mBodyParts->sort();
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp
index d24dac385f..92eeebd705 100644
--- a/indra/newview/llcontrolavatar.cpp
+++ b/indra/newview/llcontrolavatar.cpp
@@ -327,10 +327,13 @@ LLControlAvatar *LLControlAvatar::createControlAvatar(LLVOVolume *obj)
{
LLControlAvatar *cav = (LLControlAvatar*)gObjectList.createObjectViewer(LL_PCODE_LEGACY_AVATAR, gAgent.getRegion(), CO_FLAG_CONTROL_AVATAR);
- cav->mRootVolp = obj;
+ if (cav)
+ {
+ cav->mRootVolp = obj;
- // Sync up position/rotation with object
- cav->matchVolumeTransform();
+ // Sync up position/rotation with object
+ cav->matchVolumeTransform();
+ }
return cav;
}
diff --git a/indra/newview/llfloatermyscripts.cpp b/indra/newview/llfloatermyscripts.cpp
index fa2de21a8f..6f9a6c9066 100644
--- a/indra/newview/llfloatermyscripts.cpp
+++ b/indra/newview/llfloatermyscripts.cpp
@@ -41,6 +41,7 @@ const S32 SIZE_OF_ONE_KB = 1024;
LLFloaterMyScripts::LLFloaterMyScripts(const LLSD& seed)
: LLFloater(seed),
mGotAttachmentMemoryUsed(false),
+ mAttachmentDetailsRequested(false),
mAttachmentMemoryMax(0),
mAttachmentMemoryUsed(0),
mGotAttachmentURLsUsed(false),
@@ -55,12 +56,24 @@ BOOL LLFloaterMyScripts::postBuild()
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
getChild("loading_text")->setValue(LLSD(msg_waiting));
- return requestAttachmentDetails();
+ mAttachmentDetailsRequested = requestAttachmentDetails();
+ return TRUE;
}
-BOOL LLFloaterMyScripts::requestAttachmentDetails()
+// virtual
+void LLFloaterMyScripts::onOpen(const LLSD& key)
{
- if (!gAgent.getRegion()) return FALSE;
+ if (!mAttachmentDetailsRequested)
+ {
+ mAttachmentDetailsRequested = requestAttachmentDetails();
+ }
+
+ LLFloater::onOpen(key);
+}
+
+bool LLFloaterMyScripts::requestAttachmentDetails()
+{
+ if (!gAgent.getRegion()) return false;
LLSD body;
std::string url = gAgent.getRegion()->getCapability("AttachmentResources");
@@ -68,11 +81,11 @@ BOOL LLFloaterMyScripts::requestAttachmentDetails()
{
LLCoros::instance().launch("LLFloaterMyScripts::getAttachmentLimitsCoro",
boost::bind(&LLFloaterMyScripts::getAttachmentLimitsCoro, this, url));
- return TRUE;
+ return true;
}
else
{
- return FALSE;
+ return false;
}
}
@@ -284,7 +297,7 @@ void LLFloaterMyScripts::onClickRefresh(void* userdata)
btn->setEnabled(false);
}
instance->clearList();
- instance->requestAttachmentDetails();
+ instance->mAttachmentDetailsRequested = instance->requestAttachmentDetails();
}
else
{
diff --git a/indra/newview/llfloatermyscripts.h b/indra/newview/llfloatermyscripts.h
index fe33ab90ae..3c053a0223 100644
--- a/indra/newview/llfloatermyscripts.h
+++ b/indra/newview/llfloatermyscripts.h
@@ -36,15 +36,17 @@ public:
LLFloaterMyScripts(const LLSD& seed);
BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
void setAttachmentDetails(LLSD content);
void setAttachmentSummary(LLSD content);
- BOOL requestAttachmentDetails();
+ bool requestAttachmentDetails();
void clearList();
private:
void getAttachmentLimitsCoro(std::string url);
bool mGotAttachmentMemoryUsed;
+ bool mAttachmentDetailsRequested;
S32 mAttachmentMemoryMax;
S32 mAttachmentMemoryUsed;
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index d94bf3f651..960fd9620d 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -38,7 +38,7 @@
#include "llcallbacklist.h"
#include "llcheckboxctrl.h"
#include "llfontgl.h"
-#include "llimagebmp.h"
+#include "llimagepng.h"
#include "llimagej2c.h"
#include "llinventory.h"
#include "llnotificationsutil.h"
@@ -89,7 +89,7 @@
#include "llcorehttputil.h"
#include "llviewerassetupload.h"
-const std::string SCREEN_PREV_FILENAME = "screen_report_last.bmp";
+const std::string SCREEN_PREV_FILENAME = "screen_report_last.png";
//=========================================================================
//-----------------------------------------------------------------------------
@@ -872,10 +872,10 @@ void LLFloaterReporter::takeScreenshot(bool use_prev_screenshot)
if(!use_prev_screenshot)
{
std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME);
- LLPointer bmp_image = new LLImageBMP;
- if(bmp_image->encode(mImageRaw, 0.0f))
+ LLPointer png_image = new LLImagePNG;
+ if(png_image->encode(mImageRaw, 0.0f))
{
- bmp_image->save(screenshot_filename);
+ png_image->save(screenshot_filename);
}
}
else
@@ -948,10 +948,10 @@ void LLFloaterReporter::takeNewSnapshot()
{
std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME);
mPrevImageRaw = new LLImageRaw;
- LLPointer start_image_bmp = new LLImageBMP;
- if(start_image_bmp->load(screenshot_filename))
+ LLPointer start_image_png = new LLImagePNG;
+ if(start_image_png->load(screenshot_filename))
{
- if (start_image_bmp->decode(mPrevImageRaw, 0.0f))
+ if (start_image_png->decode(mPrevImageRaw, 0.0f))
{
LLNotificationsUtil::add("LoadPreviousReportScreenshot", LLSD(), LLSD(), boost::bind(&LLFloaterReporter::onLoadScreenshotDialog,this, _1, _2));
return;
diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp
index 66e832111b..d1246dae4c 100644
--- a/indra/newview/llfloatersearch.cpp
+++ b/indra/newview/llfloatersearch.cpp
@@ -120,6 +120,7 @@ void LLFloaterSearch::onOpen(const LLSD& key)
p.allow_address_entry = false;
LLFloaterWebContent::onOpen(p);
+ mWebBrowser->setFocus(TRUE);
search(p.search);
}
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index c2c15ee12b..0429749e11 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -850,6 +850,18 @@ void LLFloaterTools::onOpen(const LLSD& key)
{
mTab->selectTabByName(panel);
}
+
+ LLTool* tool = LLToolMgr::getInstance()->getCurrentTool();
+ if (tool == LLToolCompInspect::getInstance()
+ || tool == LLToolDragAndDrop::getInstance())
+ {
+ // Something called floater up while it was supressed (during drag n drop, inspect),
+ // so it won't be getting any layout or visibility updates, update once
+ // further updates will come from updateLayout()
+ LLCoordGL select_center_screen;
+ MASK mask = gKeyboard->currentMask(TRUE);
+ updatePopup(select_center_screen, mask);
+ }
//gMenuBarView->setItemVisible("BuildTools", TRUE);
}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index a50a66a8ce..349ba6183b 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -107,6 +107,7 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
bool confirm_attachment_rez(const LLSD& notification, const LLSD& response);
void teleport_via_landmark(const LLUUID& asset_id);
static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);
+static bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit);
static BOOL can_move_to_landmarks(LLInventoryItem* inv_item);
static bool check_category(LLInventoryModel* model,
const LLUUID& cat_id,
@@ -2269,7 +2270,7 @@ public:
// Can be destroyed (or moved to trash)
BOOL LLFolderBridge::isItemRemovable() const
{
- if (!get_is_category_removable(getInventoryModel(), mUUID))
+ if (!get_is_category_removable(getInventoryModel(), mUUID) || isMarketplaceListingsFolder())
{
return FALSE;
}
@@ -2285,11 +2286,6 @@ BOOL LLFolderBridge::isItemRemovable() const
return FALSE;
}
}
-
- if (isMarketplaceListingsFolder() && LLMarketplaceData::instance().getActivationState(mUUID))
- {
- return FALSE;
- }
return TRUE;
}
@@ -2511,9 +2507,28 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
is_movable = FALSE;
// tooltip?
}
+
+ U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
if (is_movable && move_is_into_outfit)
{
- if((mUUID == my_outifts_id) || (getCategory() && getCategory()->getPreferredType() == LLFolderType::FT_NONE))
+ if (mUUID == my_outifts_id)
+ {
+ if (source != LLToolDragAndDrop::SOURCE_AGENT || move_is_from_marketplacelistings)
+ {
+ tooltip_msg = LLTrans::getString("TooltipOutfitNotInInventory");
+ is_movable = false;
+ }
+ else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear))
+ {
+ is_movable = true;
+ }
+ else
+ {
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ is_movable = false;
+ }
+ }
+ else if(getCategory() && getCategory()->getPreferredType() == LLFolderType::FT_NONE)
{
is_movable = ((inv_cat->getPreferredType() == LLFolderType::FT_NONE) || (inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT));
}
@@ -2558,7 +2573,6 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
}
}
}
- U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
if (is_movable
&& move_is_into_current_outfit
&& descendent_items.size() > max_items_to_wear)
@@ -2713,8 +2727,14 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
}
}
+ if (mUUID == my_outifts_id)
+ {
+ // Category can contains objects,
+ // create a new folder and populate it with links to original objects
+ dropToMyOutfits(inv_cat);
+ }
// if target is current outfit folder we use link
- if (move_is_into_current_outfit &&
+ else if (move_is_into_current_outfit &&
(inv_cat->getPreferredType() == LLFolderType::FT_NONE ||
inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT))
{
@@ -3724,12 +3744,40 @@ void LLFolderBridge::perform_pasteFromClipboard()
return;
}
}
- if (move_is_into_current_outfit || move_is_into_outfit)
+ if (move_is_into_outfit)
+ {
+ if (!move_is_into_my_outfits && item && can_move_to_outfit(item, move_is_into_current_outfit))
+ {
+ dropToOutfit(item, move_is_into_current_outfit);
+ }
+ else if (move_is_into_my_outfits && LLAssetType::AT_CATEGORY == obj->getType())
+ {
+ LLInventoryCategory* cat = model->getCategory(item_id);
+ U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
+ if (cat && can_move_to_my_outfits(model, cat, max_items_to_wear))
+ {
+ dropToMyOutfits(cat);
+ }
+ else
+ {
+ LLNotificationsUtil::add("MyOutfitsPasteFailed");
+ }
+ }
+ else
+ {
+ LLNotificationsUtil::add("MyOutfitsPasteFailed");
+ }
+ }
+ else if (move_is_into_current_outfit)
{
if (item && can_move_to_outfit(item, move_is_into_current_outfit))
{
dropToOutfit(item, move_is_into_current_outfit);
}
+ else
+ {
+ LLNotificationsUtil::add("MyOutfitsPasteFailed");
+ }
}
else if (move_is_into_favorites)
{
@@ -4675,6 +4723,46 @@ static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_curr
return TRUE;
}
+// Returns true if folder's content can be moved to Current Outfit or any outfit folder.
+static bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit)
+{
+ LLInventoryModel::cat_array_t *cats;
+ LLInventoryModel::item_array_t *items;
+ model->getDirectDescendentsOf(inv_cat->getUUID(), cats, items);
+
+ if (items->size() > wear_limit)
+ {
+ return false;
+ }
+
+ if (items->size() == 0)
+ {
+ // Nothing to move(create)
+ return false;
+ }
+
+ if (cats->size() > 0)
+ {
+ // We do not allow subfolders in outfits of "My Outfits" yet
+ return false;
+ }
+
+ LLInventoryModel::item_array_t::iterator iter = items->begin();
+ LLInventoryModel::item_array_t::iterator end = items->end();
+
+ while (iter != end)
+ {
+ LLViewerInventoryItem *item = *iter;
+ if (!can_move_to_outfit(item, false))
+ {
+ return false;
+ }
+ iter++;
+ }
+
+ return true;
+}
+
// Returns TRUE if item is a landmark or a link to a landmark
// and can be moved to Favorites or Landmarks folder.
static BOOL can_move_to_landmarks(LLInventoryItem* inv_item)
@@ -4743,6 +4831,56 @@ void LLFolderBridge::dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_c
}
}
+void LLFolderBridge::dropToMyOutfits(LLInventoryCategory* inv_cat)
+{
+ // make a folder in the My Outfits directory.
+ const LLUUID dest_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+
+ // Note: creation will take time, so passing folder id to callback is slightly unreliable,
+ // but so is collecting and passing descendants' ids
+ inventory_func_type func = boost::bind(&LLFolderBridge::outfitFolderCreatedCallback, this, inv_cat->getUUID(), _1);
+ gInventory.createNewCategory(dest_id,
+ LLFolderType::FT_OUTFIT,
+ inv_cat->getName(),
+ func);
+}
+
+void LLFolderBridge::outfitFolderCreatedCallback(LLUUID cat_source_id, LLUUID cat_dest_id)
+{
+ LLInventoryModel::cat_array_t* categories;
+ LLInventoryModel::item_array_t* items;
+ getInventoryModel()->getDirectDescendentsOf(cat_source_id, categories, items);
+
+ LLInventoryObject::const_object_list_t link_array;
+
+
+ LLInventoryModel::item_array_t::iterator iter = items->begin();
+ LLInventoryModel::item_array_t::iterator end = items->end();
+ while (iter!=end)
+ {
+ const LLViewerInventoryItem* item = (*iter);
+ // By this point everything is supposed to be filtered,
+ // but there was a delay to create folder so something could have changed
+ LLInventoryType::EType inv_type = item->getInventoryType();
+ if ((inv_type == LLInventoryType::IT_WEARABLE) ||
+ (inv_type == LLInventoryType::IT_GESTURE) ||
+ (inv_type == LLInventoryType::IT_ATTACHMENT) ||
+ (inv_type == LLInventoryType::IT_OBJECT) ||
+ (inv_type == LLInventoryType::IT_SNAPSHOT) ||
+ (inv_type == LLInventoryType::IT_TEXTURE))
+ {
+ link_array.push_back(LLConstPointer(item));
+ }
+ iter++;
+ }
+
+ if (!link_array.empty())
+ {
+ LLPointer cb = NULL;
+ link_inventory_array(cat_dest_id, link_array, cb);
+ }
+}
+
// Callback for drop item if DAMA required...
void LLFolderBridge::callback_dropItemIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryItem* inv_item)
{
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index f4df566fa6..0823cf8b52 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -359,6 +359,7 @@ protected:
void dropToFavorites(LLInventoryItem* inv_item);
void dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);
+ void dropToMyOutfits(LLInventoryCategory* inv_cat);
//--------------------------------------------------------------------
// Messy hacks for handling folder options
@@ -368,6 +369,7 @@ public:
static void staticFolderOptionsMenu();
protected:
+ void outfitFolderCreatedCallback(LLUUID cat_source_id, LLUUID cat_dest_id);
void callback_pasteFromClipboard(const LLSD& notification, const LLSD& response);
void perform_pasteFromClipboard();
void gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level);
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 38fd2d777e..31e3d408d7 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -2277,6 +2277,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
instance_entry["material"] = LL_MCODE_WOOD;
instance_entry["physics_shape_type"] = data.mModel[LLModel::LOD_PHYSICS].notNull() ? (U8)(LLViewerObject::PHYSICS_SHAPE_PRIM) : (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL);
instance_entry["mesh"] = mesh_index[data.mBaseModel];
+ instance_entry["mesh_name"] = instance.mLabel;
instance_entry["face_list"] = LLSD::emptyArray();
diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp
index 3ef89ba920..5e2442798b 100644
--- a/indra/newview/llsky.cpp
+++ b/indra/newview/llsky.cpp
@@ -119,7 +119,7 @@ void LLSky::restoreGL()
void LLSky::resetVertexBuffers()
{
- if (gSky.mVOSkyp.notNull())
+ if (gSky.mVOSkyp.notNull() && gSky.mVOGroundp.notNull())
{
gPipeline.resetVertexBuffers(gSky.mVOSkyp->mDrawable);
gPipeline.resetVertexBuffers(gSky.mVOGroundp->mDrawable);
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 0d99b35aee..6e0a36be49 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -113,7 +113,7 @@
#include "llgroupmgr.h"
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
-#include "llimagebmp.h"
+#include "llimage.h"
#include "llinventorybridge.h"
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
@@ -162,6 +162,7 @@
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
#include "llviewerstats.h"
+#include "llviewerstatsrecorder.h"
#include "llviewerthrottle.h"
#include "llviewerwindow.h"
#include "llvoavatar.h"
@@ -209,8 +210,8 @@
bool gAgentMovementCompleted = false;
S32 gMaxAgentGroups;
-std::string SCREEN_HOME_FILENAME = "screen_home.bmp";
-std::string SCREEN_LAST_FILENAME = "screen_last.bmp";
+const std::string SCREEN_HOME_FILENAME = "screen_home%s.png";
+const std::string SCREEN_LAST_FILENAME = "screen_last%s.png";
LLPointer gStartTexture;
@@ -348,6 +349,14 @@ bool idle_startup()
// to work.
gIdleCallbacks.callFunctions();
gViewerWindow->updateUI();
+
+ // There is a crash on updateClass, this is an attempt to get more information
+ if (LLMortician::graveyardCount())
+ {
+ std::stringstream log_stream;
+ LLMortician::logClass(log_stream);
+ LL_INFOS() << log_stream.str() << LL_ENDL;
+ }
LLMortician::updateClass();
const std::string delims (" ");
@@ -1220,6 +1229,7 @@ bool idle_startup()
//
// Initialize classes w/graphics stuff.
//
+ LLViewerStatsRecorder::instance(); // Since textures work in threads
gTextureList.doPrefetchImages();
display_startup();
@@ -2567,6 +2577,34 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
return false;
}
+std::string get_screen_filename(const std::string& pattern)
+{
+ if (LLGridManager::getInstance()->isInProductionGrid())
+ {
+ return llformat(pattern.c_str(), "");
+ }
+ else
+ {
+ const std::string& grid_id_str = LLGridManager::getInstance()->getGridId();
+ const std::string& grid_id_lower = utf8str_tolower(grid_id_str);
+ std::string grid = "." + grid_id_lower;
+ return llformat(pattern.c_str(), grid.c_str());
+ }
+}
+
+//static
+std::string LLStartUp::getScreenLastFilename()
+{
+ return get_screen_filename(SCREEN_LAST_FILENAME);
+}
+
+//static
+std::string LLStartUp::getScreenHomeFilename()
+{
+ return get_screen_filename(SCREEN_HOME_FILENAME);
+}
+
+//static
void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
const std::string& gender_name )
{
@@ -2660,19 +2698,32 @@ void init_start_screen(S32 location_id)
LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL;
+ U8 image_codec = IMG_CODEC_PNG;
std::string temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter();
if ((S32)START_LOCATION_ID_LAST == location_id)
{
- temp_str += SCREEN_LAST_FILENAME;
+ temp_str += LLStartUp::getScreenLastFilename();
}
else
{
- temp_str += SCREEN_HOME_FILENAME;
+ std::string path = temp_str + LLStartUp::getScreenHomeFilename();
+
+ if (!gDirUtilp->fileExists(path) && LLGridManager::getInstance()->isInProductionGrid())
+ {
+ // Fallback to old file, can be removed later
+ // Home image only sets when user changes home, so it will take time for users to switch to pngs
+ temp_str += "screen_home.bmp";
+ image_codec = IMG_CODEC_BMP;
+ }
+ else
+ {
+ temp_str = path;
+ }
}
- LLPointer start_image_bmp = new LLImageBMP;
-
+ LLPointer start_image_frmted = LLImageFormatted::createFromType(image_codec);
+
// Turn off start screen to get around the occasional readback
// driver bug
if(!gSavedSettings.getBOOL("UseStartScreen"))
@@ -2680,18 +2731,18 @@ void init_start_screen(S32 location_id)
LL_INFOS("AppInit") << "Bitmap load disabled" << LL_ENDL;
return;
}
- else if(!start_image_bmp->load(temp_str) )
+ else if(!start_image_frmted->load(temp_str) )
{
LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL;
gStartTexture = NULL;
}
else
{
- gStartImageWidth = start_image_bmp->getWidth();
- gStartImageHeight = start_image_bmp->getHeight();
+ gStartImageWidth = start_image_frmted->getWidth();
+ gStartImageHeight = start_image_frmted->getHeight();
LLPointer raw = new LLImageRaw;
- if (!start_image_bmp->decode(raw, 0.0f))
+ if (!start_image_frmted->decode(raw, 0.0f))
{
LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL;
gStartTexture = NULL;
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
index d434e86f82..db37207022 100644
--- a/indra/newview/llstartup.h
+++ b/indra/newview/llstartup.h
@@ -41,10 +41,6 @@ bool idle_startup();
void release_start_screen();
bool login_alert_done(const LLSD& notification, const LLSD& response);
-// constants, variables, & enumerations
-extern std::string SCREEN_HOME_FILENAME;
-extern std::string SCREEN_LAST_FILENAME;
-
// start location constants
enum EStartLocation
{
@@ -95,6 +91,8 @@ public:
static void setStartupState( EStartupState state );
static EStartupState getStartupState() { return gStartupState; };
static std::string getStartupStateString() { return startupStateToString(gStartupState); };
+ static std::string getScreenLastFilename(); // screenshot taken on exit
+ static std::string getScreenHomeFilename(); // screenshot taken on setting Home
static void multimediaInit();
// Initialize LLViewerMedia multimedia engine.
diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp
index f6cf714db4..5e056944e9 100644
--- a/indra/newview/llsurfacepatch.cpp
+++ b/indra/newview/llsurfacepatch.cpp
@@ -203,7 +203,7 @@ LLVector2 LLSurfacePatch::getTexCoords(const U32 x, const U32 y) const
void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3 *vertex, LLVector3 *normal,
LLVector2 *tex0, LLVector2 *tex1)
{
- if (!mSurfacep || !mSurfacep->getRegion() || !mSurfacep->getGridsPerEdge())
+ if (!mSurfacep || !mSurfacep->getRegion() || !mSurfacep->getGridsPerEdge() || !mVObjp)
{
return; // failsafe
}
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index f6cb787156..fe058024f6 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -2409,7 +2409,11 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
mLoaded = TRUE;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
- LLViewerStatsRecorder::instance().log(0.2f);
+ if (LLViewerStatsRecorder::instanceExists())
+ {
+ // Do not create this instance inside thread
+ LLViewerStatsRecorder::instance().log(0.2f);
+ }
return data_size ;
}
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index e2554bc9bc..5924dbc260 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -42,7 +42,7 @@
#include "llfeaturemanager.h"
//#include "llfirstuse.h"
#include "llhudmanager.h"
-#include "llimagebmp.h"
+#include "llimagepng.h"
#include "llmemory.h"
#include "llselectmgr.h"
#include "llsky.h"
@@ -1588,17 +1588,17 @@ void render_disconnected_background()
LL_INFOS() << "Loading last bitmap..." << LL_ENDL;
std::string temp_str;
- temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_LAST_FILENAME;
+ temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + LLStartUp::getScreenLastFilename();
- LLPointer image_bmp = new LLImageBMP;
- if( !image_bmp->load(temp_str) )
+ LLPointer image_png = new LLImagePNG;
+ if( !image_png->load(temp_str) )
{
//LL_INFOS() << "Bitmap load failed" << LL_ENDL;
return;
}
LLPointer raw = new LLImageRaw;
- if (!image_bmp->decode(raw, 0.0f))
+ if (!image_png->decode(raw, 0.0f))
{
LL_INFOS() << "Bitmap decode failed" << LL_ENDL;
gDisconnectedImagep = NULL;
@@ -1606,7 +1606,7 @@ void render_disconnected_background()
}
U8 *rawp = raw->getData();
- S32 npixels = (S32)image_bmp->getWidth()*(S32)image_bmp->getHeight();
+ S32 npixels = (S32)image_png->getWidth()*(S32)image_png->getHeight();
for (S32 i = 0; i < npixels; i++)
{
S32 sum = 0;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index c8f75c79c4..6e5c77e4a9 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -5107,8 +5107,8 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
// save the home location image to disk
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
- snap_filename += SCREEN_HOME_FILENAME;
- gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
+ snap_filename += LLStartUp::getScreenHomeFilename();
+ gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
}
if (notificationID == "RegionRestartMinutes" ||
@@ -5190,8 +5190,8 @@ static void process_special_alert_messages(const std::string & message)
// save the home location image to disk
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
- snap_filename += SCREEN_HOME_FILENAME;
- gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
+ snap_filename += LLStartUp::getScreenHomeFilename();
+ gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
}
}
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 932759c86d..2bf04dc204 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1383,7 +1383,11 @@ BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)
if (objectp)
{
- objectp->markDead(); // does the right thing if object already dead
+ // We are going to cleanup a lot of smart pointers to this object, they might be last,
+ // and object being NULLed while inside it's own function won't be pretty
+ // so create a pointer to make sure object will stay alive untill markDead() finishes
+ LLPointer sp(objectp);
+ sp->markDead(); // does the right thing if object already dead
return TRUE;
}
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index a81b3aaef9..93562cfab2 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -3680,9 +3680,9 @@ void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)
}
}
- if(te && te->getID().notNull()) //should have a texture
+ if(te && te->getID().notNull()) //should have a texture but none found
{
- LL_ERRS() << "mTextureList texture reference number is corrupted." << LL_ENDL;
+ LL_ERRS() << "mTextureList texture reference number is corrupted. Texture id: " << te->getID() << " List size: " << (U32)mTextureList.size() << LL_ENDL;
}
}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 4c6a3dd33d..c3cf07e9c7 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -122,7 +122,7 @@
#include "llhudmanager.h"
#include "llhudobject.h"
#include "llhudview.h"
-#include "llimagebmp.h"
+#include "llimage.h"
#include "llimagej2c.h"
#include "llimageworker.h"
#include "llkeyboard.h"
@@ -4487,32 +4487,46 @@ void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
}
}
-BOOL LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type)
+BOOL LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type, LLSnapshotModel::ESnapshotFormat format)
{
- LL_INFOS() << "Saving snapshot to: " << filepath << LL_ENDL;
+ LL_INFOS() << "Saving snapshot to: " << filepath << LL_ENDL;
- LLPointer raw = new LLImageRaw;
- BOOL success = rawSnapshot(raw, image_width, image_height, TRUE, FALSE, show_ui, do_rebuild);
+ LLPointer raw = new LLImageRaw;
+ BOOL success = rawSnapshot(raw, image_width, image_height, TRUE, FALSE, show_ui, do_rebuild);
- if (success)
- {
- LLPointer bmp_image = new LLImageBMP;
- success = bmp_image->encode(raw, 0.0f);
- if( success )
- {
- success = bmp_image->save(filepath);
- }
- else
- {
- LL_WARNS() << "Unable to encode bmp snapshot" << LL_ENDL;
- }
- }
- else
- {
- LL_WARNS() << "Unable to capture raw snapshot" << LL_ENDL;
- }
+ if (success)
+ {
+ U8 image_codec = IMG_CODEC_BMP;
+ switch (format)
+ {
+ case LLSnapshotModel::SNAPSHOT_FORMAT_PNG:
+ image_codec = IMG_CODEC_PNG;
+ break;
+ case LLSnapshotModel::SNAPSHOT_FORMAT_JPEG:
+ image_codec = IMG_CODEC_JPEG;
+ break;
+ default:
+ image_codec = IMG_CODEC_BMP;
+ break;
+ }
- return success;
+ LLPointer formated_image = LLImageFormatted::createFromType(image_codec);
+ success = formated_image->encode(raw, 0.0f);
+ if (success)
+ {
+ success = formated_image->save(filepath);
+ }
+ else
+ {
+ LL_WARNS() << "Unable to encode snapshot of format " << format << LL_ENDL;
+ }
+ }
+ else
+ {
+ LL_WARNS() << "Unable to capture raw snapshot" << LL_ENDL;
+ }
+
+ return success;
}
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index d41a606f11..071a3632dd 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -347,7 +347,7 @@ public:
// snapshot functionality.
// perhaps some of this should move to llfloatershapshot? -MG
- BOOL saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR);
+ BOOL saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::ESnapshotFormat format = LLSnapshotModel::SNAPSHOT_FORMAT_BMP);
BOOL rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height, BOOL keep_window_aspect = TRUE, BOOL is_texture = FALSE,
BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, S32 max_size = MAX_SNAPSHOT_IMAGE_SIZE);
BOOL thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5584efeb7b..b5db5d4a48 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -10467,6 +10467,11 @@ void LLVOAvatar::calcMutedAVColor()
new_color = LLColor4::grey4;
change_msg = " blocked: color is grey4";
}
+ else if (!isTooComplex())
+ {
+ new_color = LLColor4::white;
+ change_msg = " simple imposter ";
+ }
else if ( mMutedAVColor == LLColor4::white || mMutedAVColor == LLColor4::grey3 || mMutedAVColor == LLColor4::grey4 )
{
// select a color based on the first byte of the agents uuid so any muted agent is always the same color
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index e10ba77e16..739f7bd47c 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -824,6 +824,20 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
params.args.add("-lf");
params.args.add(log_folder);
+ // set log file basename and .log
+ params.args.add("-lp");
+ params.args.add("SLVoice");
+ params.args.add("-ls");
+ params.args.add(".log");
+
+ // rotate any existing log
+ std::string new_log = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SLVoice.log");
+ std::string old_log = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SLVoice.old");
+ if (gDirUtilp->fileExists(new_log))
+ {
+ LLFile::rename(new_log, old_log);
+ }
+
std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");
if (!shutdown_timeout.empty())
{
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index cee47a591e..89f5eb86b3 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -916,10 +916,10 @@ void LLWorld::updateWaterObjects()
}
}
- for (std::list::iterator iter = mHoleWaterObjects.begin();
+ for (std::list >::iterator iter = mHoleWaterObjects.begin();
iter != mHoleWaterObjects.end(); ++ iter)
{
- LLVOWater* waterp = *iter;
+ LLVOWater* waterp = (*iter).get();
gObjectList.killObject(waterp);
}
mHoleWaterObjects.clear();
diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h
index c9ac241d5a..993fbfb2cc 100644
--- a/indra/newview/llworld.h
+++ b/indra/newview/llworld.h
@@ -199,7 +199,7 @@ private:
// Data for "Fake" objects
//
- std::list mHoleWaterObjects;
+ std::list > mHoleWaterObjects;
LLPointer mEdgeWaterObjects[8];
LLPointer mDefaultWaterTexturep;
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index 2bff6d3e2f..4dd64cba2a 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS] Stunden
+
+
+ Std.
+
[MINUTES] Min.
@@ -21,7 +27,10 @@
Restzeit
-
+
+ Immer
+
+
Nur neue Benutzer
@@ -319,18 +328,18 @@ Nur große Parzellen können in der Suche aufgeführt werden.
Bauen:
-
-
+
+
Objekteintritt:
-
-
+
+
Skripts ausführen:
-
-
+
+
@@ -354,8 +363,8 @@ Nur große Parzellen können in der Suche aufgeführt werden.
Foto:
-
- Avatare in anderen Parzellen können Avatare in dieser Parzelle sehen und mit ihnen chatten
+
+ Avatare in anderen Parzellen können Avatare in dieser Parzelle sehen und mit ihnen chatten.
@@ -457,9 +466,12 @@ Nur große Parzellen können in der Suche aufgeführt werden.
- Immer verbannt ([COUNT], max. [MAX])
+ Verbannt ([COUNT], max. [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/de/floater_ban_duration.xml b/indra/newview/skins/default/xui/de/floater_ban_duration.xml
new file mode 100644
index 0000000000..19e55f5527
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Verbannungsdauer:
+
+
+
+ Immer
+
+
+ Temporär
+
+
+
+ Stunden.
+
+
+
+
diff --git a/indra/newview/skins/default/xui/de/floater_gesture.xml b/indra/newview/skins/default/xui/de/floater_gesture.xml
index 7b35da8d5c..0a82535040 100644
--- a/indra/newview/skins/default/xui/de/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_gesture.xml
@@ -21,7 +21,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/de/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/de/floater_preferences_graphics_advanced.xml
index 1361366bd5..41e8dc5ef4 100644
--- a/indra/newview/skins/default/xui/de/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/de/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Antialiasing:
diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
index 14e666fd22..21419d8e10 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
Wird geladen...
+
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 6999679b3f..154256b53e 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -77,7 +77,7 @@ Objekt:
-
+
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 17ed6a5385..feb1ae23a5 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -1607,7 +1607,7 @@ Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 un
[AGENT] wurden zur [LIST_TYPE]-Liste von [ESTATE] hinzugefügt.
- [AGENT] wurden von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
+ [AGENT] wurde von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
[AGENT] wurden von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml
index 9d4301de73..9fec5a242d 100644
--- a/indra/newview/skins/default/xui/de/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_general.xml
@@ -46,7 +46,7 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen.
-
+
- Inhaltseinstufung auswählen -
diff --git a/indra/newview/skins/default/xui/de/panel_region_access.xml b/indra/newview/skins/default/xui/de/panel_region_access.xml
index 4ebc4867fb..d2448bea7e 100644
--- a/indra/newview/skins/default/xui/de/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_access.xml
@@ -14,6 +14,7 @@
+
Immer zugelassen:
@@ -26,7 +27,8 @@
-
+
+
Immer zugelassene Gruppen:
@@ -40,6 +42,7 @@
+
Immer verbannt:
diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml
index b713dd58d0..f6a5ed22f9 100644
--- a/indra/newview/skins/default/xui/de/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml
@@ -16,7 +16,7 @@
(unbekannt)
-
+
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 95eb88614b..0fa4ec9aff 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -75,6 +75,9 @@ Erweitertes Beleuchtungsmodell: [GPU_SHADERS]
Texturspeicher: [TEXTURE_MEMORY] MB
Erstellungszeit VFS (Cache): [VFS_TIME]
+
+ HiDPI-Anzeigemodus: [HIDPI]
+
J2C-Decoderversion: [J2C_VERSION]
Audiotreiberversion: [AUDIO_DRIVER_VERSION]
@@ -1477,6 +1480,15 @@ besuchen Sie bitte http://secondlife.com/support
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Fenster mit Spieloptionen öffnen.
+
+
+ Ausgewählte Geste inworld ausführen.
+
+
+ Fenster mit Spieloptionen öffnen.
+
Jeder kann Artikel im Marktplatz verkaufen.
@@ -5398,9 +5410,6 @@ Setzen Sie den Editorpfad in Anführungszeichen
Ziele
-
- Facebook
-
Flickr
@@ -5494,9 +5503,6 @@ Setzen Sie den Editorpfad in Anführungszeichen
Ziele von Interesse
-
- Auf Facebook posten
-
Auf Flickr hochladen
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 053c041849..f72767cceb 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -326,6 +326,16 @@ Initialization with the Marketplace failed because of a system or network error.
name="okbutton"
yestext="OK"/>
+
+
+ One or more items can't be used inside "My outfits"
+
+
fail
-
- Please do not directly run the viewer executable. Update any existing shortcuts to run SL_Launcher instead.
-
-
+
Teleport failed.
[REASON]
fail
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c386cb9457..9eedc45aa9 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -263,6 +263,8 @@ Please try logging in again in a minute.
You can't move a listed listing
You can't move the marketplace listings root folder
All items in a stock folder must have the same type and permission
+ You can only put items or outfits from your personal inventory into "My outfits"
+ One or more items can't be used inside "My outfits"
You can't move a folder into its child
You can't move a folder into itself
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index b5da302762..998d2a8863 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS] hrs.
+
+
+ hr.
+
[MINUTES] min.
@@ -21,6 +27,9 @@
restantes
+
+ Siempre
+
@@ -318,18 +327,18 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
Crear objetos:
-
-
+
+
Dejar objetos:
-
-
+
+
Ejecutar scripts:
-
-
+
+
@@ -353,7 +362,7 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
Foto:
-
+
Los avatares de otras parcelas pueden ver a los avatares de esta parcela y chatear con ellos
@@ -459,9 +468,12 @@ los media:
- Siempre prohibido ([COUNT], max [MAX])
+ Prohibido ([COUNT], max [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/es/floater_ban_duration.xml b/indra/newview/skins/default/xui/es/floater_ban_duration.xml
new file mode 100644
index 0000000000..02252ede20
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Duración:
+
+
+
+ Siempre
+
+
+ Temporario
+
+
+
+ horas
+
+
+
+
diff --git a/indra/newview/skins/default/xui/es/floater_gesture.xml b/indra/newview/skins/default/xui/es/floater_gesture.xml
index d90de8c9f4..45fb7c6773 100644
--- a/indra/newview/skins/default/xui/es/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/es/floater_gesture.xml
@@ -20,7 +20,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/es/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/es/floater_preferences_graphics_advanced.xml
index a0618521ee..b8d5824fb7 100644
--- a/indra/newview/skins/default/xui/es/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/es/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Antialiasing:
diff --git a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
index d05a023279..d467aa749c 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
Cargando...
+
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index eac09b767b..0a3576b799 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -1589,7 +1589,7 @@ Se superan en [NUM_EXCESS] los [MAX_AGENTS] permitidos en [LIST_TYPE].
[AGENT] ya está en tu lista [LIST_TYPE].
- [AGENT] ya está en tu lista [LIST_TYPE].
+ [AGENT] ya están en tu lista [LIST_TYPE].
[AGENT] fue añadido a la lista [LIST_TYPE] de [ESTATE].
diff --git a/indra/newview/skins/default/xui/es/panel_group_general.xml b/indra/newview/skins/default/xui/es/panel_group_general.xml
index b00c300c85..a17814d15d 100644
--- a/indra/newview/skins/default/xui/es/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_general.xml
@@ -46,7 +46,7 @@ Deja el cursor sobre las opciones para ver más ayuda.
-
+
- Selecciona el nivel de calificación -
diff --git a/indra/newview/skins/default/xui/es/panel_region_access.xml b/indra/newview/skins/default/xui/es/panel_region_access.xml
index 3177aa2ab2..a6b0ee6867 100644
--- a/indra/newview/skins/default/xui/es/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_access.xml
@@ -14,6 +14,7 @@
+
Siempre autorizado:
@@ -27,6 +28,7 @@
+
Grupos siempre autorizados:
@@ -40,6 +42,7 @@
+
Siempre prohibido:
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 1b06675670..c9bfbd6610 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -67,6 +67,9 @@ Modelo de iluminación avanzado: [GPU_SHADERS]
Memoria de textura: [TEXTURE_MEMORY]MB
VFS (cache) hora de creación: [VFS_TIME]
+
+ Modo de visualización HiDPi: [HIDPI]
+
Versión de descodificador J2C: [J2C_VERSION]
Versión del controlador audio: [AUDIO_DRIVER_VERSION]
@@ -1460,6 +1463,15 @@ http://secondlife.com/support para obtener ayuda sobre cómo solucionar este pro
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Abrir la ventana con las opciones del Juego
+
+
+ Realizar gesto seleccionado en el mundo.
+
+
+ Abrir la ventana con las opciones del Juego
+
Cualquier usuario puede vender objetos en el mercado.
@@ -5309,9 +5321,6 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
Destinos
-
- Facebook
-
Flickr
@@ -5405,9 +5414,6 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
Destinos de interés
-
- Publicar en Facebook
-
Subir a Flickr
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 42d7709c99..219857eb99 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HEURES] hrs.
+
+
+ hr.
+
[MINUTES] min
@@ -21,6 +27,9 @@
restantes
+
+ Toujours
+
@@ -322,18 +331,18 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
Construire :
-
-
+
+
Laisser entrer des objets :
-
-
+
+
Exécuter des scripts :
-
-
+
+
@@ -357,7 +366,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
Photo :
-
+
Les avatars sur d'autres parcelles peuvent voir et chatter avec les avatars sur cette parcelle.
@@ -464,9 +473,12 @@ musique :
- Toujours interdit ([COUNT], max. [MAX])
+ Interdit interdit ([COUNT], max. [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/fr/floater_ban_duration.xml b/indra/newview/skins/default/xui/fr/floater_ban_duration.xml
new file mode 100644
index 0000000000..2c877b81fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Durée de l'interdiction :
+
+
+
+ Toujours
+
+
+ Temporaire
+
+
+
+ heures
+
+
+
+
diff --git a/indra/newview/skins/default/xui/fr/floater_gesture.xml b/indra/newview/skins/default/xui/fr/floater_gesture.xml
index 5ead1cae3a..9f4822e626 100644
--- a/indra/newview/skins/default/xui/fr/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_gesture.xml
@@ -21,7 +21,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml
index 23fff3b770..fd47254934 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Anti-aliasing :
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
index 5646ad45eb..1fc065e6c5 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
Chargement...
+
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 4239c949fd..54f132f684 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -1572,10 +1572,10 @@ Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS].
Impossible d’ajouter un résident banni à la liste des gérants de domaine.
- Impossible d'ajouter le gérant de domaine à la liste interdite.
+ Impossible d'ajouter le gérant de domaine [AGENT] à la liste interdite.
- <nolink>[GROUP]</nolink> est déjà dans la liste des groupes autorisés.
+ <nolink>[GROUP]</nolink> est déjà dans la liste des Groupes autorisés.
[AGENT] est déjà dans votre liste [LIST_TYPE].
@@ -1587,7 +1587,7 @@ Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS].
[AGENT] a été ajouté à la liste [LIST_TYPE] de [ESTATE].
- [AGENT] ont été ajoutéq à la liste [LIST_TYPE] de [ESTATE].
+ [AGENT] ont été ajouté à la liste [LIST_TYPE] de [ESTATE].
[AGENT] a été supprimé de la liste [LIST_TYPE] de [ESTATE].
@@ -2987,7 +2987,7 @@ Si vous restez dans cette région, vous serez déconnecté(e).
Si vous restez dans cette région, vous serez déconnecté(e).
-Charger la page Web [URL] ?
+ Charger la page Web [URL] ?
[MESSAGE]
diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml
index a2655dcd45..5953e210e5 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml
@@ -46,7 +46,7 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus.
-
+
- Catégorie de contenu -
diff --git a/indra/newview/skins/default/xui/fr/panel_region_access.xml b/indra/newview/skins/default/xui/fr/panel_region_access.xml
index db77f3b8f1..ab62d3247f 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_access.xml
@@ -1,5 +1,5 @@
-
+
@@ -14,6 +14,7 @@
+
Toujours autorisé :
@@ -27,6 +28,7 @@
+
Groupes toujours autorisés :
@@ -40,6 +42,7 @@
+
Toujours interdit :
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index dbd5cc3bf4..959494545a 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -76,6 +76,9 @@ Modèle d’éclairage avancé : [GPU_SHADERS]
Mémoire textures : [TEXTURE_MEMORY] Mo
Heure de création VFS (cache) : [VFS_TIME]
+
+ Mode d'affichage HiDPI : [HIDPI]
+
J2C Decoder Version: [J2C_VERSION]
Audio Driver Version: [AUDIO_DRIVER_VERSION]
@@ -1478,6 +1481,15 @@ http://secondlife.com/support pour vous aider à résoudre ce problème.
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Ouvrir la fenêtre avec les options Jeu
+
+
+ Exécuter le geste sélectionné dans le monde virtuel.
+
+
+ Ouvrir la fenêtre avec les options Jeu
+
Tout le monde peut vendre des articles sur la Place du marché.
@@ -5399,9 +5411,6 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles
Destinations
-
- Facebook
-
Flickr
@@ -5495,9 +5504,6 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles
Destinations intéressantes
-
- Publier sur Facebook
-
Charger sur Flickr
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index 67c46b6b62..0a7837e122 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS] ore.
+
+
+ ora.
+
[MINUTES] min
@@ -21,6 +27,9 @@
rimanenti
+
+ Sempre
+
@@ -323,18 +332,18 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
Creare oggetti:
-
-
+
+
Immissione oggetti:
-
-
+
+
Avere script attivi:
-
-
+
+
@@ -358,8 +367,8 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
Fotografia:
-
- Gli avatar su altri lotti possono vedere gli avatar su questo lotto e chattare con loro
+
+ Gli avatar di altri lotti possono vedere gli avatar che si trovano in questo lotto e chattare con loro
@@ -464,9 +473,12 @@ Media:
- Sempre esclusi ([COUNT], max [MAX])
+ Espulsi ([COUNT], max [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/it/floater_ban_duration.xml b/indra/newview/skins/default/xui/it/floater_ban_duration.xml
new file mode 100644
index 0000000000..996cb82cd7
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Durata espulsione:
+
+
+
+ Sempre
+
+
+ Temporanea
+
+
+
+ ore.
+
+
+
+
diff --git a/indra/newview/skins/default/xui/it/floater_gesture.xml b/indra/newview/skins/default/xui/it/floater_gesture.xml
index b9419ebc22..0382cf9a90 100644
--- a/indra/newview/skins/default/xui/it/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_gesture.xml
@@ -20,7 +20,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/it/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/it/floater_preferences_graphics_advanced.xml
index b9fe6d76e7..3773ef3711 100644
--- a/indra/newview/skins/default/xui/it/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/it/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Antialiasing:
diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
index 7ec229f9d3..d08bcb217b 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
In caricamento...
+
diff --git a/indra/newview/skins/default/xui/it/floater_report_abuse.xml b/indra/newview/skins/default/xui/it/floater_report_abuse.xml
index f74d84fb8f..2fad438a4e 100644
--- a/indra/newview/skins/default/xui/it/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/it/floater_report_abuse.xml
@@ -76,7 +76,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 07a3eb5095..d7be208c51 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -1574,7 +1574,7 @@ Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS].
Impossibile aggiungere il residente espulso alla lista dei gestori delle proprietà.
- Impossibile aggiunere il gestore della proprietà immobiliare [AGENT] all’elenco degli espulsi.
+ Impossibile aggiungere il gestore della proprietà immobiliare [AGENT] all’elenco degli espulsi.
<nolink>[GROUP]</nolink> si trova già nell’elenco dei Gruppi ammessi.
@@ -1916,7 +1916,7 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
- Rimuovi questo Residente dall’elenco degli espulsi solo per questa proprietà immobiliare oppure per [ALL_ESTATES]?
+ Vuoi rimuovere questo Residente dall’elenco degli espulsi solo per questa proprietà immobiliare oppure per [ALL_ESTATES]?
diff --git a/indra/newview/skins/default/xui/it/panel_group_general.xml b/indra/newview/skins/default/xui/it/panel_group_general.xml
index 49baa73811..60028e6098 100644
--- a/indra/newview/skins/default/xui/it/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_general.xml
@@ -46,7 +46,7 @@ Muovi il tuo mouse sopra le opzioni per maggiore aiuto.
-
+
- Seleziona categoria di accesso -
diff --git a/indra/newview/skins/default/xui/it/panel_region_access.xml b/indra/newview/skins/default/xui/it/panel_region_access.xml
index 06ab2b40e7..7547dbe76f 100644
--- a/indra/newview/skins/default/xui/it/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_access.xml
@@ -1,9 +1,9 @@
-
+
- Gestori delle proprietà immobiliari
+ Gestori delle proprietà immobiliari:
@@ -14,9 +14,10 @@
+
- Sempre ammesso:
+ Sempre ammessi:
@@ -26,10 +27,11 @@
-
+
+
- Gruppi sempre consentiti:
+ Gruppi sempre ammessi:
@@ -40,6 +42,7 @@
+
Sempre espulsi:
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 9492d062c3..9265ce9ec6 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -73,6 +73,9 @@ Modello illuminazione avanzato: [GPU_SHADERS]
Memoria texture: [TEXTURE_MEMORY]MB
Data/ora creazione VFS (cache): [VFS_TIME]
+
+ Modalità display HiDPI: [HIDPI]
+
J2C Versione decoder: [J2C_VERSION]
Versione del driver audio: [AUDIO_DRIVER_VERSION][LIBCEF_VERSION]
@@ -1468,6 +1471,15 @@ http://secondlife.com/support per risolvere il problema.
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Apri finestra con opzioni di Gioco.
+
+
+ Esegui il movimento selezionato nel mondo virtuale.
+
+
+ Apri finestra con opzioni di Gioco.
+
Chiunque può vendere oggetti nel Marketplace.
@@ -5314,9 +5326,6 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette.
Destinazioni
-
- Facebook
-
Flickr
@@ -5410,9 +5419,6 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette.
Destinazioni interessanti
-
- Pubblica su Facebook
-
Carica su Flickr
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index df94daad8e..d26a1b34d5 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS] 時間
+
+
+ 時間
+
[MINUTES] 分
@@ -21,6 +27,9 @@
残り
+
+ 常時
+
@@ -320,18 +329,18 @@
制作:
-
-
+
+
オブジェクトの進入:
-
-
+
+
スクリプトの実行:
-
-
+
+
@@ -355,8 +364,8 @@
スナップショット:
-
- 他の区画にいるアバターがこの区画にいるアバターに会ってチャットできる
+
+ 他の区画にいるアバターがこの区画にいるアバターに会ってチャットできます
@@ -458,9 +467,12 @@
- 常に禁止する ([COUNT] 人、最大 [MAX] 人)
+ 禁止する ([COUNT] 人、最大 [MAX] 人)
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/ja/floater_ban_duration.xml b/indra/newview/skins/default/xui/ja/floater_ban_duration.xml
new file mode 100644
index 0000000000..a9d00b0116
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ 禁止期間:
+
+
+
+ 常時
+
+
+ 一時的
+
+
+
+ 時間
+
+
+
+
diff --git a/indra/newview/skins/default/xui/ja/floater_gesture.xml b/indra/newview/skins/default/xui/ja/floater_gesture.xml
index 1ed5ad31db..b5b1efe386 100644
--- a/indra/newview/skins/default/xui/ja/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_gesture.xml
@@ -21,7 +21,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/ja/floater_preferences_graphics_advanced.xml
index ff7814ffb7..c28afa4c98 100644
--- a/indra/newview/skins/default/xui/ja/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
アンチエイリアシング:
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
index ae8ae9f7b5..ef7e90a6bc 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
ローディング...
+
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index 7631cd7aba..4ddd0d2605 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -76,7 +76,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml
index a1bfb67823..aab536f653 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml
@@ -46,7 +46,7 @@
-
+
- レーティング区分を指定 -
diff --git a/indra/newview/skins/default/xui/ja/panel_region_access.xml b/indra/newview/skins/default/xui/ja/panel_region_access.xml
index c0612dd150..34809688d0 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_access.xml
@@ -14,6 +14,7 @@
+
常に許可:
@@ -27,6 +28,7 @@
+
常に許可されたグループ:
@@ -40,6 +42,7 @@
+
常に禁止:
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 91d31faa76..1e123eb619 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -76,6 +76,9 @@ LOD 係数: [LOD_FACTOR]
テクスチャメモリ: [TEXTURE_MEMORY]MB
VFS(キャッシュ)作成時間: [VFS_TIME]
+
+ HiDPI 表示モード: [HIDPI]
+
J2C デコーダバージョン: [J2C_VERSION]
オーディオドライババージョン: [AUDIO_DRIVER_VERSION]
@@ -1477,6 +1480,15 @@ support@secondlife.com にお問い合わせください。
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ [再生] オプションでウィンドウを開ける。
+
+
+ インワールドで選択済みのジェスチャーを実行する。
+
+
+ [再生] オプションでウィンドウを開ける。
+
マーケットプレイスでは誰でもアイテムを売ることができます。
@@ -5397,9 +5409,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
行き先
-
- Facebook
-
Flickr
@@ -5493,9 +5502,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
行ってみたい場所
-
- Facebook へ投稿
-
Flickr にアップロード
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index 6039b7fd4a..ef71baa0b6 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS] hrs.
+
+
+ hr.
+
[MINUTES] min.
@@ -21,6 +27,9 @@
faltam
+
+ Sempre
+
@@ -318,18 +327,18 @@ Apenas lotes maiores podem ser listados na busca.
Criar objetos:
-
-
+
+
Entrada de objetos:
-
-
+
+
Executar scripts:
-
-
+
+
@@ -353,7 +362,7 @@ Apenas lotes maiores podem ser listados na busca.
Foto:
-
+
Avatares em outros lotes podem ver e conversar com avatares neste lote
@@ -459,9 +468,12 @@ Mídia:
- Sempre banido ([COUNT], máx: [MAX])
+ Banido ([COUNT], máx: [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pt/floater_ban_duration.xml b/indra/newview/skins/default/xui/pt/floater_ban_duration.xml
new file mode 100644
index 0000000000..1b2bab88c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Duração do banimento:
+
+
+
+ Sempre
+
+
+ Temporário
+
+
+
+ horas.
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pt/floater_gesture.xml b/indra/newview/skins/default/xui/pt/floater_gesture.xml
index 2e5b92aaf7..308d3e7d88 100644
--- a/indra/newview/skins/default/xui/pt/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/pt/floater_gesture.xml
@@ -20,7 +20,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/pt/floater_preferences_graphics_advanced.xml
index 89b3781151..c5039267ca 100644
--- a/indra/newview/skins/default/xui/pt/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Antialiasing:
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
index d094c1b63a..9885ee2a23 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
Carregando...
+
diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
index f30201fc33..1429fe183c 100644
--- a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
@@ -76,7 +76,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 478af96e95..530a272dbb 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -1904,7 +1904,7 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar.
- Remover este Residente da lista de banimento para acessar este estado somente ou para [ALL_ESTATES]?
+ Remover este Residente da lista de banimento para acessar esta propriedade somente ou para [ALL_ESTATES]?
diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml
index b634ec3f64..64a7d13fdb 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_general.xml
@@ -46,7 +46,7 @@ Para obter mais ajuda, passe o mouse sobre as opções.
-
+
- Selecione o nível de maturidade -
diff --git a/indra/newview/skins/default/xui/pt/panel_region_access.xml b/indra/newview/skins/default/xui/pt/panel_region_access.xml
index cc2136a459..c6273ea70d 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_access.xml
@@ -14,6 +14,7 @@
+
Sempre permitido:
@@ -27,6 +28,7 @@
+
Grupos sempre permitidos:
@@ -40,6 +42,7 @@
+
Sempre banido:
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index c4fbf1f4c9..cccc70a92a 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -67,6 +67,9 @@ Modelo avançado de luzes: [GPU_SHADERS]
Memória de textura: [TEXTURE_MEMORY]MB
VFS (cache) tempo de criação: [VFS_TIME]
+
+ HiDPI modo de exibição: [HIDPI]
+
Versão do J2C Decoder: [J2C_VERSION]
Versão do driver de áudio: [AUDIO_DRIVER_VERSION]
@@ -1428,6 +1431,15 @@ http://secondlife.com/support para ajuda ao resolver este problema.
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Abrir a janela com as opções do Jogo.
+
+
+ Executar o gesto selecionado no mundo.
+
+
+ Abrir a janela com as opções do Jogo.
+
Qualquer um pode vender itens no Mercado.
@@ -5273,9 +5285,6 @@ Tente colocar o caminho do editor entre aspas.
Destinos
-
- Facebook
-
Flickr
@@ -5369,9 +5378,6 @@ Tente colocar o caminho do editor entre aspas.
Destinos de interesse
-
- Publicar no Facebook
-
Carregar no Flickr
diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml
index 50402633f2..1ae6df76d9 100644
--- a/indra/newview/skins/default/xui/ru/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ \[HOURS] ч
+
+
+ ч
+
[MINUTES] мин
@@ -21,6 +27,9 @@
осталось
+
+ Всегда
+
@@ -316,18 +325,18 @@
Строительство:
-
-
+
+
Проникновение объектов:
-
-
+
+
Запускать скрипты:
-
-
+
+
@@ -351,7 +360,7 @@
Снимок:
-
+
Аватары с других участков могут видеть аватары на этом участке и общаться с ними
@@ -454,9 +463,12 @@
- Всегда заблокировано ([COUNT], макс. [MAX])
+ Заблокировано ([COUNT], макс. [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/ru/floater_ban_duration.xml b/indra/newview/skins/default/xui/ru/floater_ban_duration.xml
new file mode 100644
index 0000000000..c4238cfa77
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Длительность запрета:
+
+
+
+ Всегда
+
+
+ Временно
+
+
+
+ часы
+
+
+
+
diff --git a/indra/newview/skins/default/xui/ru/floater_gesture.xml b/indra/newview/skins/default/xui/ru/floater_gesture.xml
index 759d81b2c6..c9b85acff8 100644
--- a/indra/newview/skins/default/xui/ru/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/ru/floater_gesture.xml
@@ -20,7 +20,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/ru/floater_preferences_graphics_advanced.xml
index efad8678b6..fc6b6a173e 100644
--- a/indra/newview/skins/default/xui/ru/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/ru/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Сглаживание:
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
index 2f39d4a4a4..ffff72f17e 100644
--- a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
Загрузка...
+
diff --git a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
index 67d847aa6b..3ac8cb74b4 100644
--- a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
@@ -67,7 +67,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/ru/panel_group_general.xml b/indra/newview/skins/default/xui/ru/panel_group_general.xml
index ba38dbf89e..ee3a74103f 100644
--- a/indra/newview/skins/default/xui/ru/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_group_general.xml
@@ -44,7 +44,7 @@
-
+
- Выберите рейтинг зрелости -
diff --git a/indra/newview/skins/default/xui/ru/panel_region_access.xml b/indra/newview/skins/default/xui/ru/panel_region_access.xml
index 48adfbcd95..e2349f4c83 100644
--- a/indra/newview/skins/default/xui/ru/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/ru/panel_region_access.xml
@@ -14,6 +14,7 @@
+
Разрешено всегда:
@@ -27,6 +28,7 @@
+
Допуск групп всегда разрешен:
@@ -40,6 +42,7 @@
+
Всегда заблокированы:
diff --git a/indra/newview/skins/default/xui/ru/panel_region_estate.xml b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
index 5789058b3b..feeac0464a 100644
--- a/indra/newview/skins/default/xui/ru/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
@@ -16,7 +16,7 @@
(неизвестно)
-
+
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index 9192ebf601..9c01de2f1b 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -76,6 +76,9 @@ SLURL: <nolink>[SLURL]</nolink>
Память текстур: [TEXTURE_MEMORY] МБ
Время создания VFS (кэш): [VFS_TIME]
+
+ Режим отображения HiDPI: [HIDPI]
+
Версия декодера J2C: [J2C_VERSION]
Версия аудиодрайвера: [AUDIO_DRIVER_VERSION]
@@ -1475,6 +1478,15 @@ support@secondlife.com.
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Откройте окно с настройками игры.
+
+
+ Выполните выбранный жест в игровом мире.
+
+
+ Откройте окно с настройками игры.
+
Продавать вещи в торговом центре может кто угодно.
@@ -5405,9 +5417,6 @@ support@secondlife.com.
Пункты
-
- Facebook
-
Flickr
@@ -5501,9 +5510,6 @@ support@secondlife.com.
Интересные места
-
- Опубликовать в Facebook
-
Загрузить на Flickr
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
index 1f4decb056..48b16e2fde 100644
--- a/indra/newview/skins/default/xui/tr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS] sa
+
+
+ sa
+
[MINUTES] dak.
@@ -21,6 +27,9 @@
kaldı
+
+ Her zaman
+
@@ -316,18 +325,18 @@ Sadece büyük parseller aramada görünür.
İnşa Et:
-
-
+
+
Nesne Girişi:
-
-
+
+
Komut Dosyalarını Çalıştır:
-
-
+
+
@@ -351,8 +360,8 @@ Sadece büyük parseller aramada görünür.
Anlık Görüntü:
-
- Başka parsellerdeki avatarlar bu parseldeki avatarları görebilir ve onlarla sohbet edebilir
+
+ Diğer parsellerdeki avatarlar bu parseldeki avatarları görebilir ve onlarla sohbet edebilir
@@ -454,9 +463,12 @@ Sadece büyük parseller aramada görünür.
- Her zaman engellenen ([COUNT], maks. [MAX])
+ Engellenen ([COUNT], maks. [MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/tr/floater_ban_duration.xml b/indra/newview/skins/default/xui/tr/floater_ban_duration.xml
new file mode 100644
index 0000000000..22788a161a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ Engelleme süresi:
+
+
+
+ Her zaman
+
+
+ Geçici
+
+
+
+ saat
+
+
+
+
diff --git a/indra/newview/skins/default/xui/tr/floater_gesture.xml b/indra/newview/skins/default/xui/tr/floater_gesture.xml
index 5f5d28ad6c..c466681fd9 100644
--- a/indra/newview/skins/default/xui/tr/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/tr/floater_gesture.xml
@@ -20,7 +20,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml
index 734ceec89f..01ada1354c 100644
--- a/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
Antialiasing:
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
index 23391249d1..996054a8c6 100644
--- a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
Yükleniyor...
+
diff --git a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
index 28bacca763..de386d3bde 100644
--- a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
@@ -67,7 +67,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/tr/panel_group_general.xml b/indra/newview/skins/default/xui/tr/panel_group_general.xml
index 0462026249..c666778c69 100644
--- a/indra/newview/skins/default/xui/tr/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/tr/panel_group_general.xml
@@ -45,7 +45,7 @@ Daha fazla yardım edinmek için farenizi seçeneklerin üzerine getirin.
-
+
- Erişkinlik seviyesini seçin -
diff --git a/indra/newview/skins/default/xui/tr/panel_region_access.xml b/indra/newview/skins/default/xui/tr/panel_region_access.xml
index 57e721bc04..81653b1e54 100644
--- a/indra/newview/skins/default/xui/tr/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/tr/panel_region_access.xml
@@ -14,6 +14,7 @@
+
Her zaman izin verilen:
@@ -27,6 +28,7 @@
+
Her zaman izin verilen gruplar:
@@ -40,6 +42,7 @@
+
Her zaman engellenen:
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index dddf2365ab..27f3c4d4d9 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -76,6 +76,9 @@ Gelişmiş Aydınlatma Modeli: [GPU_SHADERS]
Doku belleği: [TEXTURE_MEMORY]MB
VFS (önbellek) oluşturma saati: [VFS_TIME]
+
+ HiDPI görüntü modu: [HIDPI]
+
J2C Kod Çözücü Sürümü: [J2C_VERSION]
Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION]
@@ -1475,6 +1478,15 @@ http://secondlife.com/support adresini ziyaret edin.
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ Pencereyi Oyun seçenekleri ile birlikte açın.
+
+
+ Seçilen mimiği SL dünyasında uygulayın.
+
+
+ Pencereyi Oyun seçenekleri ile birlikte açın.
+
Pazaryerinde herkes öğe satabilir.
@@ -5406,9 +5418,6 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
Hedef Konum
-
- Facebook
-
Flickr
@@ -5502,9 +5511,6 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
İlgilendiğiniz hedef konumlar
-
- Facebook'ta Yayınla
-
Flickr'a yükle
diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml
index badd00bc6d..1164722abf 100644
--- a/indra/newview/skins/default/xui/zh/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml
@@ -9,6 +9,12 @@
"Parcel_R_Dark"
+
+ [HOURS]小時
+
+
+ 小時
+
[MINUTES] 分鐘
@@ -21,6 +27,9 @@
剩餘時間
+
+ 永遠
+
@@ -316,18 +325,18 @@
建造:
-
-
+
+
物件進入:
-
-
+
+
執行腳本:
-
-
+
+
@@ -351,7 +360,7 @@
快照:
-
+
其他地段的化身可以看見本地段裡的化身,並與之交談
@@ -454,9 +463,12 @@
- 永久封鎖([COUNT],最多[MAX])
+ 被封鎖([COUNT],最多[MAX])
-
+
+
+
+
diff --git a/indra/newview/skins/default/xui/zh/floater_ban_duration.xml b/indra/newview/skins/default/xui/zh/floater_ban_duration.xml
new file mode 100644
index 0000000000..d8a3e8c8a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_ban_duration.xml
@@ -0,0 +1,19 @@
+
+
+
+ 封鎖時間長度:
+
+
+
+ 永遠
+
+
+ 暫時性
+
+
+
+ 小時
+
+
+
+
diff --git a/indra/newview/skins/default/xui/zh/floater_gesture.xml b/indra/newview/skins/default/xui/zh/floater_gesture.xml
index e7b1ed1de3..592b410d1c 100644
--- a/indra/newview/skins/default/xui/zh/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/zh/floater_gesture.xml
@@ -20,7 +20,7 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml
index 7d8160a0f0..7b127acd71 100644
--- a/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml
@@ -43,6 +43,7 @@
+
消除鋸齒:
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
index 9447939801..f6b163dcd6 100644
--- a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
@@ -15,6 +15,7 @@
載入中...
+
diff --git a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml
index 347b40e675..2dfcfe6168 100644
--- a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml
@@ -67,7 +67,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml
index 2b16b61dd1..de81a26fed 100644
--- a/indra/newview/skins/default/xui/zh/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_group_general.xml
@@ -45,7 +45,7 @@
-
+
- 選擇內容分級 -
diff --git a/indra/newview/skins/default/xui/zh/panel_region_access.xml b/indra/newview/skins/default/xui/zh/panel_region_access.xml
index 7842d26321..04c67da333 100644
--- a/indra/newview/skins/default/xui/zh/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/zh/panel_region_access.xml
@@ -14,6 +14,7 @@
+
永遠准許:
@@ -27,6 +28,7 @@
+
永遠准許的群組:
@@ -40,6 +42,7 @@
+
永遠禁入:
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index d14eac88ef..bbbaf57501 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -76,6 +76,9 @@
材質記憶體:[TEXTURE_MEMORY]MB
VFS(快取)建立時間:[VFS_TIME]
+
+ HiDPI顯示模式:[HIDPI]
+
J2C 解碼器版本: [J2C_VERSION]
音效驅動程式版本: [AUDIO_DRIVER_VERSION]
@@ -1471,6 +1474,15 @@ http://secondlife.com/support 求助解決問題。
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+
+ 開啟「Play選項」視窗。
+
+
+ 在虛擬世界裡執行所選姿勢。
+
+
+ 開啟「Play選項」視窗。
+
任何人都可在第二人生購物市集出售物品。
@@ -5404,9 +5416,6 @@ http://secondlife.com/support 求助解決問題。
目的地
-
- 臉書
-
Flickr
@@ -5500,9 +5509,6 @@ http://secondlife.com/support 求助解決問題。
你可能感興趣的目的地
-
- 發佈到臉書
-
上傳到 Flickr
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 929d26c748..1bf4212b33 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -46,7 +46,7 @@ viewer_dir = os.path.dirname(__file__)
# Put it FIRST because some of our build hosts have an ancient install of
# indra.util.llmanifest under their system Python!
sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python"))
-from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError
+from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError, MissingError
from llbase import llsd
class ViewerManifest(LLManifest):
@@ -148,13 +148,10 @@ class ViewerManifest(LLManifest):
with self.prefix(src_dst="skins"):
# include the entire textures directory recursively
with self.prefix(src_dst="*/textures"):
- self.path("*/*.tga")
- self.path("*/*.j2c")
self.path("*/*.jpg")
self.path("*/*.png")
self.path("*.tga")
self.path("*.j2c")
- self.path("*.jpg")
self.path("*.png")
self.path("textures.xml")
self.path("*/xui/*/*.xml")
@@ -174,14 +171,6 @@ class ViewerManifest(LLManifest):
self.path("*/*/*.gif")
- # local_assets dir (for pre-cached textures)
- with self.prefix(src_dst="local_assets"):
- self.path("*.j2c")
- self.path("*.tga")
-
- # File in the newview/ directory
- self.path("gpu_table.txt")
-
#build_data.json. Standard with exception handling is fine. If we can't open a new file for writing, we have worse problems
#platform is computed above with other arg parsing
build_data_dict = {"Type":"viewer","Version":'.'.join(self.args['version']),
@@ -520,17 +509,6 @@ class WindowsManifest(ViewerManifest):
with self.prefix(src=os.path.join(self.args['build'], os.pardir,
'sharedlibs', self.args['configuration'])):
- # Get llcommon and deps. If missing assume static linkage and continue.
- try:
- self.path('llcommon.dll')
- self.path('libapr-1.dll')
- self.path('libaprutil-1.dll')
- self.path('libapriconv-1.dll')
-
- except RuntimeError as err:
- print err.message
- print "Skipping llcommon.dll (assuming llcommon was linked statically)"
-
# Mesh 3rd party libs needed for auto LOD and collada reading
try:
self.path("glod.dll")
@@ -555,24 +533,21 @@ class WindowsManifest(ViewerManifest):
if self.args['configuration'].lower() == 'debug':
self.path("msvcr120d.dll")
self.path("msvcp120d.dll")
- self.path("msvcr100d.dll")
- self.path("msvcp100d.dll")
else:
self.path("msvcr120.dll")
self.path("msvcp120.dll")
- self.path("msvcr100.dll")
- self.path("msvcp100.dll")
- # Vivox runtimes
- self.path("SLVoice.exe")
+ # SLVoice executable
+ with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
+ self.path("SLVoice.exe")
+
+ # Vivox libraries
if (self.address_size == 64):
self.path("vivoxsdk_x64.dll")
self.path("ortp_x64.dll")
else:
self.path("vivoxsdk.dll")
self.path("ortp.dll")
- self.path("libsndfile-1.dll")
- self.path("vivoxoal.dll")
# Security
self.path("ssleay32.dll")
@@ -595,15 +570,6 @@ class WindowsManifest(ViewerManifest):
self.path("BugSplat.dll")
self.path("BugSplatRc.dll")
- # For google-perftools tcmalloc allocator.
- try:
- if self.args['configuration'].lower() == 'debug':
- self.path('libtcmalloc_minimal-debug.dll')
- else:
- self.path('libtcmalloc_minimal.dll')
- except:
- print "Skipping libtcmalloc_minimal.dll"
-
self.path(src="licenses-win32.txt", dst="licenses.txt")
self.path("featuretable.txt")
@@ -993,7 +959,7 @@ class DarwinManifest(ViewerManifest):
with self.prefix(src=relpkgdir, dst=""):
self.path("libndofdev.dylib")
- self.path("libhunspell-1.3.0.dylib")
+ self.path("libhunspell-1.3.a")
with self.prefix(src_dst="cursors_mac"):
self.path("*.tif")
@@ -1040,11 +1006,15 @@ class DarwinManifest(ViewerManifest):
# (source, dest) pair to self.file_list for every expanded
# file processed. Remember its size before the call.
oldlen = len(self.file_list)
- self.path(src, dst)
- # The dest appended to self.file_list has been prepended
- # with self.get_dst_prefix(). Strip it off again.
- added = [os.path.relpath(d, self.get_dst_prefix())
- for s, d in self.file_list[oldlen:]]
+ try:
+ self.path(src, dst)
+ # The dest appended to self.file_list has been prepended
+ # with self.get_dst_prefix(). Strip it off again.
+ added = [os.path.relpath(d, self.get_dst_prefix())
+ for s, d in self.file_list[oldlen:]]
+ except MissingError as err:
+ print >> sys.stderr, "Warning: "+err.msg
+ added = []
if not added:
print "Skipping %s" % dst
return added
@@ -1054,18 +1024,10 @@ class DarwinManifest(ViewerManifest):
# symlink from sub-app/Contents/Resources to the real .dylib.
# Need to get the llcommon dll from any of the build directories as well.
libfile_parent = self.get_dst_prefix()
- libfile = "libllcommon.dylib"
- dylibs = path_optional(self.find_existing_file(os.path.join(os.pardir,
- "llcommon",
- self.args['configuration'],
- libfile),
- os.path.join(relpkgdir, libfile)),
- dst=libfile)
-
+ dylibs=[]
for libfile in (
"libapr-1.0.dylib",
"libaprutil-1.0.dylib",
- "libcollada14dom.dylib",
"libexpat.1.dylib",
"libexception_handler.dylib",
"libGLOD.dylib",
@@ -1076,14 +1038,14 @@ class DarwinManifest(ViewerManifest):
):
dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile)
- # SLVoice and vivox lols, no symlinks needed
+ # SLVoice executable
+ with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
+ self.path("SLVoice")
+
+ # Vivox libraries
for libfile in (
'libortp.dylib',
- 'libsndfile.dylib',
- 'libvivoxoal.dylib',
'libvivoxsdk.dylib',
- 'libvivoxplatform.dylib',
- 'SLVoice',
):
self.path2basename(relpkgdir, libfile)
@@ -1578,7 +1540,6 @@ class Linux_i686_Manifest(LinuxManifest):
self.path("libsndfile.so.1")
#self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib
self.path("libvivoxsdk.so")
- self.path("libvivoxplatform.so")
self.strip_binaries()
@@ -1599,4 +1560,9 @@ if __name__ == "__main__":
dict(name='bugsplat', description="""BugSplat database to which to post crashes,
if BugSplat crash reporting is desired""", default=''),
]
- main(extra=extra_arguments)
+ try:
+ main(extra=extra_arguments)
+ except (ManifestError, MissingError) as err:
+ sys.exit("\nviewer_manifest.py failed: "+err.msg)
+ except:
+ raise