summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan "Geenz" Goodman <geenz@lindenlab.com>2026-02-24 17:37:15 -0600
committerGitHub <noreply@github.com>2026-02-24 17:37:15 -0600
commitb601bfdd6220da86b9c757180abc5ba618d9759c (patch)
tree483e3be2650b03e85fb621697b5b313ee7324785
parent37dd2c70380165b51a685b7b24829f4d3e15ddd8 (diff)
parent6cd2a02c7fbacfd4cf2cf9055e1c282bac3afeb6 (diff)
Merge pull request #5452 from secondlife/develop
Develop -> 2026.02
-rw-r--r--indra/llaudio/llaudioengine.cpp1
-rw-r--r--indra/llcommon/indra_constants.h22
-rw-r--r--indra/llfilesystem/llfilesystem.cpp18
-rw-r--r--indra/llmessage/llcorehttputil.cpp132
-rw-r--r--indra/llmessage/llcorehttputil.h9
-rw-r--r--indra/llrender/llimagegl.cpp2
-rw-r--r--indra/llui/lltabcontainer.cpp13
-rw-r--r--indra/llui/lltabcontainer.h1
-rw-r--r--indra/newview/CMakeLists.txt10
-rw-r--r--indra/newview/app_settings/settings.xml55
-rw-r--r--indra/newview/gltf/llgltfloader.cpp109
-rw-r--r--indra/newview/llagent.cpp21
-rw-r--r--indra/newview/llagent.h1
-rw-r--r--indra/newview/llaisapi.cpp28
-rw-r--r--indra/newview/llaisapi.h14
-rw-r--r--indra/newview/llface.cpp10
-rw-r--r--indra/newview/llfloaterbigpreview.cpp110
-rw-r--r--indra/newview/llfloaterbigpreview.h54
-rw-r--r--indra/newview/llfloaterimsession.cpp2
-rw-r--r--indra/newview/llfloaterimsessiontab.cpp18
-rw-r--r--indra/newview/llfloaterimsessiontab.h2
-rw-r--r--indra/newview/llfloaterpostprocess.cpp229
-rw-r--r--indra/newview/llfloaterpostprocess.h72
-rw-r--r--indra/newview/llfloatersearch.cpp21
-rw-r--r--indra/newview/llfloatersnapshot.cpp2
-rw-r--r--indra/newview/llfloatersounddevices.cpp86
-rw-r--r--indra/newview/llfloatersounddevices.h49
-rw-r--r--indra/newview/llfloatervoiceeffect.cpp289
-rw-r--r--indra/newview/llfloatervoiceeffect.h72
-rw-r--r--indra/newview/llinventoryfunctions.cpp2
-rw-r--r--indra/newview/llmeshrepository.cpp5
-rw-r--r--indra/newview/llnavigationbar.cpp9
-rw-r--r--indra/newview/llnetmap.cpp36
-rw-r--r--indra/newview/llpanelmaininventory.cpp54
-rw-r--r--indra/newview/llpanelmaininventory.h1
-rw-r--r--indra/newview/llpanelvoiceeffect.cpp165
-rw-r--r--indra/newview/llpanelvoiceeffect.h67
-rw-r--r--indra/newview/llpreviewnotecard.cpp3
-rw-r--r--indra/newview/lltexturecache.cpp68
-rw-r--r--indra/newview/lltexturecache.h3
-rw-r--r--indra/newview/llviewerdisplay.cpp4
-rw-r--r--indra/newview/llviewerfloaterreg.cpp10
-rw-r--r--indra/newview/llviewermenu.cpp83
-rw-r--r--indra/newview/llviewertexture.cpp22
-rw-r--r--indra/newview/llviewertexturelist.cpp20
-rw-r--r--indra/newview/llviewerwearable.cpp1
-rw-r--r--indra/newview/llvlmanager.cpp6
-rw-r--r--indra/newview/llvoavatar.cpp14
-rw-r--r--indra/newview/llvoavatar.h4
-rw-r--r--indra/newview/llworldmap.h12
-rw-r--r--indra/newview/skins/default/xui/da/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/da/floater_voice_effect.xml30
-rw-r--r--indra/newview/skins/default/xui/da/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/de/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/de/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/de/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/en/floater_big_preview.xml25
-rw-r--r--indra/newview/skins/default/xui/en/floater_post_process.xml426
-rw-r--r--indra/newview/skins/default/xui/en/floater_sound_devices.xml48
-rw-r--r--indra/newview/skins/default/xui/en/floater_voice_effect.xml162
-rw-r--r--indra/newview/skins/default/xui/en/menu_attachment_self.xml22
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory_view_default.xml48
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml6
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml16
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_general.xml52
-rw-r--r--indra/newview/skins/default/xui/en/panel_voice_effect.xml33
-rw-r--r--indra/newview/skins/default/xui/es/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/es/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_voice_effect.xml138
-rw-r--r--indra/newview/skins/default/xui/es/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_post_process.xml54
-rw-r--r--indra/newview/skins/default/xui/fr/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/fr/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/it/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/it/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/it/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/it/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/ja/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/ja/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/pl/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_post_process.xml49
-rw-r--r--indra/newview/skins/default/xui/pl/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/pl/floater_voice_effect.xml98
-rw-r--r--indra/newview/skins/default/xui/pl/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/pt/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/pt/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/ru/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/ru/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/ru/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/ru/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/tr/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/tr/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/tr/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/tr/panel_voice_effect.xml15
-rw-r--r--indra/newview/skins/default/xui/zh/floater_big_preview.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/floater_post_process.xml53
-rw-r--r--indra/newview/skins/default/xui/zh/floater_sound_devices.xml7
-rw-r--r--indra/newview/skins/default/xui/zh/floater_voice_effect.xml159
-rw-r--r--indra/newview/skins/default/xui/zh/panel_voice_effect.xml15
113 files changed, 767 insertions, 4439 deletions
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index 613c408157..6f2f7eae61 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -225,6 +225,7 @@ void LLAudioEngine::updateChannels()
void LLAudioEngine::idle()
{
+ LL_PROFILE_ZONE_SCOPED_CATEGORY_MEDIA;
// "Update" all of our audio sources, clean up dead ones.
// Primarily does position updating, cleanup of unused audio sources.
// Also does regeneration of the current priority of each audio source.
diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
index a0394da281..404e0c71ce 100644
--- a/indra/llcommon/indra_constants.h
+++ b/indra/llcommon/indra_constants.h
@@ -163,6 +163,28 @@ constexpr U8 SIM_ACCESS_ADULT = 42; // Seriously Adult Only
constexpr U8 SIM_ACCESS_DOWN = 254;
constexpr U8 SIM_ACCESS_MAX = SIM_ACCESS_ADULT;
+// map item types
+constexpr U32 MAP_ITEM_TELEHUB = 0x01;
+constexpr U32 MAP_ITEM_PG_EVENT = 0x02;
+constexpr U32 MAP_ITEM_MATURE_EVENT = 0x03;
+// constexpr U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW
+// constexpr U32 MAP_ITEM_AGENT_COUNT = 0x05;
+constexpr U32 MAP_ITEM_AGENT_LOCATIONS = 0x06;
+constexpr U32 MAP_ITEM_LAND_FOR_SALE = 0x07;
+constexpr U32 MAP_ITEM_CLASSIFIED = 0x08;
+constexpr U32 MAP_ITEM_ADULT_EVENT = 0x09;
+constexpr U32 MAP_ITEM_LAND_FOR_SALE_ADULT = 0x0a;
+
+// Region map layer numbers
+constexpr S32 MAP_SIM_OBJECTS = 0;
+constexpr S32 MAP_SIM_TERRAIN = 1;
+constexpr S32 MAP_SIM_LAND_FOR_SALE = 2; // Transparent alpha overlay of land for sale
+constexpr S32 MAP_SIM_IMAGE_TYPES = 3; // Number of map layers
+constexpr S32 MAP_SIM_INFO_MASK = 0x00FFFFFF; // Agent access may be stuffed into upper byte
+constexpr S32 MAP_SIM_LAYER_MASK = 0x0000FFFF; // Layer info is in lower 16 bits
+constexpr S32 MAP_SIM_RETURN_NULL_SIMS = 0x00010000;
+constexpr S32 MAP_SIM_PRELUDE = 0x00020000;
+
// attachment constants
constexpr U8 ATTACHMENT_ADD = 0x80;
diff --git a/indra/llfilesystem/llfilesystem.cpp b/indra/llfilesystem/llfilesystem.cpp
index 541266af4f..728ff396ef 100644
--- a/indra/llfilesystem/llfilesystem.cpp
+++ b/indra/llfilesystem/llfilesystem.cpp
@@ -77,11 +77,10 @@ bool LLFileSystem::getExists(const LLUUID& file_id, const LLAssetType::EType fil
LL_PROFILE_ZONE_SCOPED;
const std::string filename = LLDiskCache::metaDataToFilepath(file_id, file_type);
- llifstream file(filename, std::ios::binary);
- if (file.is_open())
+ boost::system::error_code ec;
+ if (boost::filesystem::exists(filename, ec) && boost::filesystem::is_regular_file(filename, ec))
{
- file.seekg(0, std::ios::end);
- return file.tellg() > 0;
+ return boost::filesystem::file_size(filename, ec) > 0;
}
return false;
}
@@ -120,15 +119,12 @@ S32 LLFileSystem::getFileSize(const LLUUID& file_id, const LLAssetType::EType fi
{
const std::string filename = LLDiskCache::metaDataToFilepath(file_id, file_type);
- S32 file_size = 0;
- llifstream file(filename, std::ios::binary);
- if (file.is_open())
+ boost::system::error_code ec;
+ if (boost::filesystem::exists(filename, ec) && boost::filesystem::is_regular_file(filename, ec))
{
- file.seekg(0, std::ios::end);
- file_size = (S32)file.tellg();
+ return static_cast<S32>(boost::filesystem::file_size(filename, ec));
}
-
- return file_size;
+ return 0;
}
bool LLFileSystem::read(U8* buffer, S32 bytes)
diff --git a/indra/llmessage/llcorehttputil.cpp b/indra/llmessage/llcorehttputil.cpp
index b24e5e4fcc..647064f607 100644
--- a/indra/llmessage/llcorehttputil.cpp
+++ b/indra/llmessage/llcorehttputil.cpp
@@ -37,6 +37,7 @@
#include "llsdserialize.h"
#include "boost/json.hpp" // Boost.Json
#include "llfilesystem.h"
+#include "workqueue.h"
#include "message.h" // for getting the port
@@ -295,41 +296,73 @@ void HttpCoroHandler::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRespons
}
else
{
- try
+ constexpr size_t MAX_BODY_SIZE_THRESHOLD = 65536;
+ bool posted = false;
+ // Some messsages (ex: AISAPI) can return large bodies.
+ // If the body is larger than our threshold, post the
+ // parsing to the general queue to avoid stalling the
+ // main thread.
+ if (response->getBodySize() > MAX_BODY_SIZE_THRESHOLD)
{
- result = this->handleSuccess(response, status);
- }
- catch (std::bad_alloc&)
- {
- LLError::LLUserWarningMsg::showOutOfMemory();
- LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling." << LL_ENDL;
- }
- }
+ response->addRef();
- buildStatusEntry(response, status, result);
+ LL::WorkQueue::ptr_t main_queue = LL::WorkQueue::getInstance("mainloop");
+ LL::WorkQueue::ptr_t general_queue = LL::WorkQueue::getInstance("General");
+ posted = main_queue->postTo(
+ general_queue,
+ [handler = shared_from_this(), response, status]() // Work done on general queue
+ {
+ std::pair<LLSD, LLCore::HttpStatus> result;
+ result.second = status;
+ try
+ {
+ result.first = handler->handleSuccess(response, result.second);
+ }
+ catch (std::bad_alloc&)
+ {
+ LLError::LLUserWarningMsg::showOutOfMemory();
+ LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling (threaded)." << LL_ENDL;
+ }
+ // LLSD is not thread safe! Be carefull with moving the result around.
+ return result;
+ },
+ [handler = shared_from_this(), response](std::pair<LLSD, LLCore::HttpStatus> result) mutable // Callback to main thread
+ {
+ handler->replyPost(response, result.second, result.first);
+ response->release();
+ });
- if (!status)
- {
- LLSD &httpStatus = result[HttpCoroutineAdapter::HTTP_RESULTS];
+ if (posted)
+ {
+ // Thread will do the cleanup and notify the pump. Done.
+ return;
+ }
+ else
+ {
+ // For whatever reason, failed to post, clean up and
+ // do the work on the main thread.
+ response->release();
+ }
+ }
- LLCore::BufferArray *body = response->getBody();
- LLCore::BufferArrayStream bas(body);
- LLSD::String bodyData;
- bodyData.reserve(response->getBodySize());
- bas >> std::noskipws;
- bodyData.assign(std::istream_iterator<U8>(bas), std::istream_iterator<U8>());
- httpStatus["error_body"] = LLSD(bodyData);
- if (getBoolSetting(HTTP_LOGBODY_KEY))
+ if (!posted)
{
- // commenting out, but keeping since this can be useful for debugging
- LL_WARNS("CoreHTTP") << "Returned body=" << std::endl << httpStatus["error_body"].asString() << LL_ENDL;
+ try
+ {
+ result = this->handleSuccess(response, status);
+ }
+ catch (std::bad_alloc&)
+ {
+ LLError::LLUserWarningMsg::showOutOfMemory();
+ LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling." << LL_ENDL;
+ }
}
}
- mReplyPump.post(result);
+ replyPost(response, status, result);
}
-void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result)
+void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result) const
{
LLSD httpresults = LLSD::emptyMap();
@@ -357,6 +390,31 @@ void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::H
result[HttpCoroutineAdapter::HTTP_RESULTS] = httpresults;
}
+void HttpCoroHandler::replyPost(LLCore::HttpResponse* response, LLCore::HttpStatus &status, LLSD& result)
+{
+ buildStatusEntry(response, status, result);
+
+ if (!status)
+ {
+ LLSD& httpStatus = result[HttpCoroutineAdapter::HTTP_RESULTS];
+
+ LLCore::BufferArray* body = response->getBody();
+ LLCore::BufferArrayStream bas(body);
+ LLSD::String bodyData;
+ bodyData.reserve(response->getBodySize());
+ bas >> std::noskipws;
+ bodyData.assign(std::istream_iterator<U8>(bas), std::istream_iterator<U8>());
+ httpStatus["error_body"] = LLSD(bodyData);
+ if (getBoolSetting(HTTP_LOGBODY_KEY))
+ {
+ // commenting out, but keeping since this can be useful for debugging
+ LL_WARNS("CoreHTTP") << "Returned body=" << std::endl << httpStatus["error_body"].asString() << LL_ENDL;
+ }
+ }
+
+ mReplyPump.post(result);
+}
+
void HttpCoroHandler::writeStatusCodes(LLCore::HttpStatus status, const std::string &url, LLSD &result)
{
result[HttpCoroutineAdapter::HTTP_RESULTS_SUCCESS] = static_cast<LLSD::Boolean>(status);
@@ -389,8 +447,8 @@ public:
HttpCoroLLSDHandler(LLEventStream &reply);
protected:
- virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status);
- virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success);
+ virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const;
+ virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const;
};
//-------------------------------------------------------------------------
@@ -400,7 +458,7 @@ HttpCoroLLSDHandler::HttpCoroLLSDHandler(LLEventStream &reply):
}
-LLSD HttpCoroLLSDHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status)
+LLSD HttpCoroLLSDHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const
{
LLSD result;
@@ -465,7 +523,7 @@ LLSD HttpCoroLLSDHandler::handleSuccess(LLCore::HttpResponse * response, LLCore:
return result;
}
-LLSD HttpCoroLLSDHandler::parseBody(LLCore::HttpResponse *response, bool &success)
+LLSD HttpCoroLLSDHandler::parseBody(LLCore::HttpResponse *response, bool &success) const
{
success = true;
if (response->getBodySize() == 0)
@@ -496,8 +554,8 @@ class HttpCoroRawHandler : public HttpCoroHandler
public:
HttpCoroRawHandler(LLEventStream &reply);
- virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status);
- virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success);
+ virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const;
+ virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const;
};
//-------------------------------------------------------------------------
@@ -506,7 +564,7 @@ HttpCoroRawHandler::HttpCoroRawHandler(LLEventStream &reply):
{
}
-LLSD HttpCoroRawHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status)
+LLSD HttpCoroRawHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const
{
LLSD result = LLSD::emptyMap();
@@ -552,7 +610,7 @@ LLSD HttpCoroRawHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::
return result;
}
-LLSD HttpCoroRawHandler::parseBody(LLCore::HttpResponse *response, bool &success)
+LLSD HttpCoroRawHandler::parseBody(LLCore::HttpResponse *response, bool &success) const
{
success = true;
return LLSD();
@@ -571,8 +629,8 @@ class HttpCoroJSONHandler : public HttpCoroHandler
public:
HttpCoroJSONHandler(LLEventStream &reply);
- virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status);
- virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success);
+ virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const;
+ virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const;
};
//-------------------------------------------------------------------------
@@ -581,7 +639,7 @@ HttpCoroJSONHandler::HttpCoroJSONHandler(LLEventStream &reply) :
{
}
-LLSD HttpCoroJSONHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status)
+LLSD HttpCoroJSONHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const
{
LLSD result = LLSD::emptyMap();
@@ -607,7 +665,7 @@ LLSD HttpCoroJSONHandler::handleSuccess(LLCore::HttpResponse * response, LLCore:
return result;
}
-LLSD HttpCoroJSONHandler::parseBody(LLCore::HttpResponse *response, bool &success)
+LLSD HttpCoroJSONHandler::parseBody(LLCore::HttpResponse *response, bool &success) const
{
success = true;
BufferArray * body(response->getBody());
diff --git a/indra/llmessage/llcorehttputil.h b/indra/llmessage/llcorehttputil.h
index 3dbfd6f00d..3072f78911 100644
--- a/indra/llmessage/llcorehttputil.h
+++ b/indra/llmessage/llcorehttputil.h
@@ -259,7 +259,7 @@ inline LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest::ptr_t & requ
/// +- ["url"] - The URL used to make the call.
/// +- ["headers"] - A map of name name value pairs with the HTTP headers.
///
-class HttpCoroHandler : public LLCore::HttpHandler
+class HttpCoroHandler : public LLCore::HttpHandler, public std::enable_shared_from_this<HttpCoroHandler>
{
public:
@@ -279,11 +279,12 @@ public:
protected:
/// this method may modify the status value
- virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) = 0;
- virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) = 0;
+ virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const = 0;
+ virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const = 0;
private:
- void buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result);
+ void buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result) const;
+ void replyPost(LLCore::HttpResponse* response, LLCore::HttpStatus& status, LLSD& result);
LLEventStream &mReplyPump;
};
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 97ea6f67bd..4a3d32c7ff 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -2189,7 +2189,7 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
{
- if(sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask)
+ if(!data_in || sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask)
{
return ;
}
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 5e0985c79c..48e42d9fc0 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -2202,3 +2202,16 @@ void LLTabContainer::setTabVisibility( LLPanel const *aPanel, bool aVisible )
updateMaxScrollPos();
}
+
+bool LLTabContainer::getTabVisibility(const LLPanel* panel) const
+{
+ for (tuple_list_t::const_iterator itr = mTabList.begin(); itr != mTabList.end(); ++itr)
+ {
+ LLTabTuple const* pTT = *itr;
+ if (pTT->mTabPanel == panel)
+ {
+ return pTT->mVisible;
+ }
+ }
+ return false;
+}
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 4ac7e73d25..cbf56dc653 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -225,6 +225,7 @@ public:
S32 getMaxTabWidth() const { return mMaxTabWidth; }
void setTabVisibility( LLPanel const *aPanel, bool );
+ bool getTabVisibility(const LLPanel* panel) const;
void startDragAndDropDelayTimer() { mDragAndDropDelayTimer.start(); }
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 5a3664405e..5818a900f5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -197,7 +197,6 @@ set(viewer_SOURCE_FILES
llfloateravatartextures.cpp
llfloaterbanduration.cpp
llfloaterbeacons.cpp
- llfloaterbigpreview.cpp
llfloaterbuildoptions.cpp
llfloaterbulkpermission.cpp
llfloaterbulkupload.cpp
@@ -280,7 +279,6 @@ set(viewer_SOURCE_FILES
llfloaterpay.cpp
llfloaterperformance.cpp
llfloaterperms.cpp
- llfloaterpostprocess.cpp
llfloaterprofile.cpp
llfloaterpreference.cpp
llfloaterpreferencesgraphicsadvanced.cpp
@@ -305,7 +303,6 @@ set(viewer_SOURCE_FILES
llfloatersidepanelcontainer.cpp
llfloaterslapptest.cpp
llfloatersnapshot.cpp
- llfloatersounddevices.cpp
llfloaterspellchecksettings.cpp
llfloatertelehub.cpp
llfloatertestinspectors.cpp
@@ -317,7 +314,6 @@ set(viewer_SOURCE_FILES
llfloatertranslationsettings.cpp
llfloateruipreview.cpp
llfloaterurlentry.cpp
- llfloatervoiceeffect.cpp
llfloatervoicevolume.cpp
llfloaterwebcontent.cpp
llfloaterwhitelistentry.cpp
@@ -514,7 +510,6 @@ set(viewer_SOURCE_FILES
llpanelsnapshotprofile.cpp
llpanelteleporthistory.cpp
llpaneltiptoast.cpp
- llpanelvoiceeffect.cpp
llpaneltopinfobar.cpp
llpanelpulldown.cpp
llpanelvoicedevicesettings.cpp
@@ -882,7 +877,6 @@ set(viewer_HEADER_FILES
llfloateravatartextures.h
llfloaterbanduration.h
llfloaterbeacons.h
- llfloaterbigpreview.h
llfloaterbuildoptions.h
llfloaterbulkpermission.h
llfloaterbulkupload.h
@@ -969,7 +963,6 @@ set(viewer_HEADER_FILES
llfloaterpay.h
llfloaterperformance.h
llfloaterperms.h
- llfloaterpostprocess.h
llfloaterprofile.h
llfloaterpreference.h
llfloaterpreferencesgraphicsadvanced.h
@@ -994,7 +987,6 @@ set(viewer_HEADER_FILES
llfloatersidepanelcontainer.h
llfloaterslapptest.h
llfloatersnapshot.h
- llfloatersounddevices.h
llfloaterspellchecksettings.h
llfloatertelehub.h
llfloatertestinspectors.h
@@ -1006,7 +998,6 @@ set(viewer_HEADER_FILES
llfloatertranslationsettings.h
llfloateruipreview.h
llfloaterurlentry.h
- llfloatervoiceeffect.h
llfloatervoicevolume.h
llfloaterwebcontent.h
llfloaterwhitelistentry.h
@@ -1189,7 +1180,6 @@ set(viewer_HEADER_FILES
llpaneltiptoast.h
llpanelpulldown.h
llpanelvoicedevicesettings.h
- llpanelvoiceeffect.h
llpaneltopinfobar.h
llpanelvolume.h
llpanelvolumepulldown.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 56178323e2..8caa4786c9 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -489,6 +489,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>RecentJumpThresholdSecs</key>
+ <map>
+ <key>Comment</key>
+ <string>Seconds after a jump input during which finish-anim is suppressed to avoid interrupting rapid successive jumps.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>1.0</real>
+ </map>
<key>AvatarAxisDeadZone0</key>
<map>
<key>Comment</key>
@@ -10668,6 +10679,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>GroupTitlesTagMode</key>
+ <map>
+ <key>Comment</key>
+ <string>Select Group Titles tag mode: 0 - no group tags, 1 - only my group tag, 2 - all group tags</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>2</integer>
+ </map>
<key>ShowAxes</key>
<map>
<key>Comment</key>
@@ -16442,6 +16464,39 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>InventoryShowRecentTab</key>
+ <map>
+ <key>Comment</key>
+ <string>Show/hide Recent tab in the Inventory floater</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>InventoryShowWornTab</key>
+ <map>
+ <key>Comment</key>
+ <string>Show/hide Worn tab in the Inventory floater</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>InventoryShowFavoritesTab</key>
+ <map>
+ <key>Comment</key>
+ <string>Show/hide Favorites tab in the Inventory floater</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>StatsReportMaxDuration</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/gltf/llgltfloader.cpp b/indra/newview/gltf/llgltfloader.cpp
index 5b8e41f0b4..5a94a2c6c6 100644
--- a/indra/newview/gltf/llgltfloader.cpp
+++ b/indra/newview/gltf/llgltfloader.cpp
@@ -440,7 +440,25 @@ void LLGLTFLoader::processNodeHierarchy(S32 node_idx, std::map<std::string, S32>
(LLModel::NO_ERRORS == pModel->getStatus()) &&
validate_model(pModel))
{
- mTransform.setIdentity();
+ // Build the scene transform.
+ // Non-skinned meshes: scene transform carries coord rotation + hierarchy,
+ // preserving the object's rotation/position/scale for upload.
+ // Skinned meshes: transform is already baked into vertices, so scene is identity.
+ if (node.mSkin >= 0)
+ {
+ mTransform.setIdentity();
+ }
+ else
+ {
+ glm::mat4 hierarchy_transform;
+ computeCombinedNodeTransform(mGLTFAsset, node_idx, hierarchy_transform);
+ glm::mat4 combined = coord_system_rotation * hierarchy_transform;
+ if (mApplyXYRotation)
+ {
+ combined = coord_system_rotationxy * combined;
+ }
+ mTransform = LLMatrix4(glm::value_ptr(combined));
+ }
transformation = mTransform;
// adjust the transformation to compensate for mesh normalization
@@ -684,7 +702,12 @@ std::string LLGLTFLoader::processTexture(std::string& full_path_out, S32 texture
// Process embedded textures
if (image.mBufferView >= 0)
{
- return extractTextureToTempFile(texture_index, texture_type);
+ std::string temp_path = extractTextureToTempFile(texture_index, texture_type);
+ if (!temp_path.empty())
+ {
+ full_path_out = temp_path;
+ }
+ return temp_path;
}
return "";
@@ -734,23 +757,47 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const std::string& bas
S32 skinIdx = nodeno.mSkin;
- // Compute final combined transform matrix (hierarchy + coordinate rotation)
+ // Compute the vertex transform for this mesh.
+ // Non-skinned meshes: vertices are left untransformed; the node's hierarchy transform
+ // (rotation, translation, scale) is stored in the scene transform instead, matching
+ // the DAE loader. This ensures the uploaded object's bounding box and transform
+ // properties are correct. See: https://github.com/secondlife/viewer/issues/5431
+ // Skinned meshes: coord rotation + hierarchy are baked into vertex positions because
+ // inverse bind matrices and skin weights are already computed in that space.
+ // TODO: consider aligning skinned meshes with the DAE loader (scene transform instead
+ // of vertex baking), which would require adjusting inverse bind matrices, bind shape
+ // matrix, and weight keying to match.
S32 node_index = static_cast<S32>(&nodeno - &mGLTFAsset.mNodes[0]);
glm::mat4 hierarchy_transform;
computeCombinedNodeTransform(mGLTFAsset, node_index, hierarchy_transform);
- // Combine transforms: coordinate rotation applied to hierarchy transform
- glm::mat4 final_transform = coord_system_rotation * hierarchy_transform;
- if (mApplyXYRotation)
+ glm::mat4 vertex_transform;
+ if (skinIdx >= 0)
{
- final_transform = coord_system_rotationxy * final_transform;
+ // Skinned mesh: bake coord rotation + hierarchy into vertices.
+ // Inverse bind matrices and skin weights depend on this transform being applied.
+ vertex_transform = coord_system_rotation * hierarchy_transform;
+ if (mApplyXYRotation)
+ {
+ vertex_transform = coord_system_rotationxy * vertex_transform;
+ }
+ }
+ else
+ {
+ // Non-skinned mesh: don't apply any transform to vertices.
+ // The hierarchy transform will be stored in the scene transform matrix.
+ vertex_transform = glm::mat4(1.0f); // identity
}
// Check if we have a negative scale (flipped coordinate system)
- bool hasNegativeScale = glm::determinant(final_transform) < 0.0f;
+ // coord_system_rotation and coord_system_rotationxy are pure rotations (det=1),
+ // so negative scale depends only on the hierarchy transform.
+ bool hasNegativeScale = glm::determinant(hierarchy_transform) < 0.0f;
+
+ bool hasVertexTransform = (vertex_transform != glm::mat4(1.0f));
// Pre-compute normal transform matrix (transpose of inverse of upper-left 3x3)
- const glm::mat3 normal_transform = glm::transpose(glm::inverse(glm::mat3(final_transform)));
+ const glm::mat3 normal_transform = glm::transpose(glm::inverse(glm::mat3(vertex_transform)));
// Mark unsuported joints with '-1' so that they won't get added into weights
// GLTF maps all joints onto all meshes. Gather use count per mesh to cut unused ones.
@@ -803,27 +850,45 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const std::string& bas
return false; // Skip this primitive
}
- // Apply the global scale and center offset to all vertices
+ // Apply vertex transform (if any) to all vertices.
+ // Skinned meshes: this bakes coord rotation + hierarchy into vertices.
+ // Non-skinned meshes: vertex_transform is identity (no baking).
for (U32 i = 0; i < prim.getVertexCount(); i++)
{
- // Use pre-computed final_transform
- glm::vec4 pos(prim.mPositions[i][0], prim.mPositions[i][1], prim.mPositions[i][2], 1.0f);
- glm::vec4 transformed_pos = final_transform * pos;
-
GLTFVertex vert;
- vert.position = glm::vec3(transformed_pos);
- if (!prim.mNormals.empty())
+ if (hasVertexTransform)
{
- // Use pre-computed normal_transform
- glm::vec3 normal_vec(prim.mNormals[i][0], prim.mNormals[i][1], prim.mNormals[i][2]);
- vert.normal = glm::normalize(normal_transform * normal_vec);
+ glm::vec4 pos(prim.mPositions[i][0], prim.mPositions[i][1], prim.mPositions[i][2], 1.0f);
+ glm::vec4 transformed_pos = vertex_transform * pos;
+ vert.position = glm::vec3(transformed_pos);
+
+ if (!prim.mNormals.empty())
+ {
+ glm::vec3 normal_vec(prim.mNormals[i][0], prim.mNormals[i][1], prim.mNormals[i][2]);
+ vert.normal = glm::normalize(normal_transform * normal_vec);
+ }
+ else
+ {
+ vert.normal = glm::normalize(normal_transform * glm::vec3(0.0f, 0.0f, 1.0f));
+ LL_DEBUGS("GLTF_IMPORT") << "No normals found for primitive, using default normal." << LL_ENDL;
+ }
}
else
{
- // Use default normal (pointing up in model space)
- vert.normal = glm::normalize(normal_transform * glm::vec3(0.0f, 0.0f, 1.0f));
- LL_DEBUGS("GLTF_IMPORT") << "No normals found for primitive, using default normal." << LL_ENDL;
+ // No transform: store raw GLTF positions and normals.
+ // The scene transform will carry coord rotation + hierarchy.
+ vert.position = glm::vec3(prim.mPositions[i][0], prim.mPositions[i][1], prim.mPositions[i][2]);
+
+ if (!prim.mNormals.empty())
+ {
+ vert.normal = glm::vec3(prim.mNormals[i][0], prim.mNormals[i][1], prim.mNormals[i][2]);
+ }
+ else
+ {
+ vert.normal = glm::vec3(0.0f, 0.0f, 1.0f);
+ LL_DEBUGS("GLTF_IMPORT") << "No normals found for primitive, using default normal." << LL_ENDL;
+ }
}
// Flip texture V coordinate
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 60af0cad05..3ab87cac13 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -426,6 +426,7 @@ LLAgent::LLAgent() :
mIsDoNotDisturb(false),
mControlFlags(0x00000000),
+ mLastJumpInputTime(0.0),
mAutoPilot(false),
mAutoPilotFlyOnStop(false),
@@ -780,6 +781,10 @@ void LLAgent::moveUp(S32 direction)
if (direction > 0)
{
+ if (!getFlying())
+ {
+ mLastJumpInputTime = LLTimer::getTotalSeconds();
+ }
setControlFlags(AGENT_CONTROL_UP_POS | AGENT_CONTROL_FAST_UP);
}
else if (direction < 0)
@@ -2663,7 +2668,21 @@ void LLAgent::onAnimStop(const LLUUID& id)
}
else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND)
{
- setControlFlags(AGENT_CONTROL_FINISH_ANIM);
+ // FIRE-34049/FIRE-34273/https://github.com/secondlife/viewer/issues/4218
+ // Avoid forcing AGENT_CONTROL_FINISH_ANIM, which can short-circuit the next pre-jump
+ // during rapid successive jumps.
+ // TODO: a more robust fix would require knowing which specific animation finished,
+ // information that is not currently provided by the simulator.
+ const bool up_pos = (mControlFlags & AGENT_CONTROL_UP_POS) != 0;
+ const F64 now = LLTimer::getTotalSeconds();
+ const F64 elapsed = now - mLastJumpInputTime;
+ static LLCachedControl<F32> recent_jump_threshold_secs(gSavedSettings, "RecentJumpThresholdSecs");
+ const bool recent_jump = (mLastJumpInputTime > 0.0) && (elapsed < recent_jump_threshold_secs);
+
+ if (!up_pos && !recent_jump)
+ {
+ setControlFlags(AGENT_CONTROL_FINISH_ANIM);
+ }
}
}
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 3352890d99..e6d9623957 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -487,6 +487,7 @@ private:
S32 mControlsTakenCount[TOTAL_CONTROLS];
S32 mControlsTakenPassedOnCount[TOTAL_CONTROLS];
U32 mControlFlags; // Replacement for the mFooKey's
+ F64 mLastJumpInputTime; // Time of last jump input (key-down) in seconds from LLTimer::getTotalSeconds()
//--------------------------------------------------------------------
// Animations
diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp
index 9c76f56ef3..f67f2688a1 100644
--- a/indra/newview/llaisapi.cpp
+++ b/indra/newview/llaisapi.cpp
@@ -1019,6 +1019,9 @@ void AISAPI::InvokeAISCommandCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t ht
}
//-------------------------------------------------------------------------
+U32 AISUpdate::sBatchFrameCount = 0;
+LLTimer AISUpdate::sBatchTimer;
+
AISUpdate::AISUpdate(const LLSD& update, AISAPI::COMMAND_TYPE type, const LLSD& request_body)
: mType(type)
{
@@ -1036,8 +1039,16 @@ AISUpdate::AISUpdate(const LLSD& update, AISAPI::COMMAND_TYPE type, const LLSD&
mFetchDepth = request_body["depth"].asInteger();
}
- mTimer.setTimerExpirySec(AIS_EXPIRY_SECONDS);
- mTimer.start();
+ mTaskTimer.setTimerExpirySec(AIS_TASK_EXPIRY_SECONDS);
+ mTaskTimer.start();
+
+ U32 current_frame = LLFrameTimer::getFrameCount();
+ if (sBatchFrameCount != current_frame)
+ {
+ sBatchTimer.setTimerExpirySec(AIS_BATCH_EXPIRY_SECONDS);
+ sBatchTimer.start();
+ sBatchFrameCount = current_frame;
+ }
parseUpdate(update);
}
@@ -1058,7 +1069,7 @@ void AISUpdate::clearParseResults()
void AISUpdate::checkTimeout()
{
- if (mTimer.hasExpired())
+ if (mTaskTimer.hasExpired() || sBatchTimer.hasExpired())
{
// If we are taking too long, don't starve other tasks,
// yield to mainloop.
@@ -1067,7 +1078,16 @@ void AISUpdate::checkTimeout()
// a chance, so wait for a frame tick instead.
llcoro::suspendUntilNextFrame();
LLCoros::checkStop();
- mTimer.setTimerExpirySec(AIS_EXPIRY_SECONDS);
+ mTaskTimer.setTimerExpirySec(AIS_TASK_EXPIRY_SECONDS);
+
+ U32 current_frame = LLFrameTimer::getFrameCount();
+ if (sBatchFrameCount != current_frame)
+ {
+ // To give other tasks a chance batch timer
+ // has a longer delay.
+ sBatchTimer.setTimerExpirySec(AIS_BATCH_EXPIRY_SECONDS);
+ sBatchFrameCount = current_frame;
+ }
}
}
diff --git a/indra/newview/llaisapi.h b/indra/newview/llaisapi.h
index cfc286da2e..1dab0dd1f9 100644
--- a/indra/newview/llaisapi.h
+++ b/indra/newview/llaisapi.h
@@ -130,9 +130,13 @@ private:
void clearParseResults();
void checkTimeout();
- // Fetch can return large packets of data, throttle it to not cause lags
- // Todo: make throttle work over all fetch requests isntead of per-request
- const F32 AIS_EXPIRY_SECONDS = 0.008f;
+ // Fetches can return large packets of data,
+ // throttle them individually to not get stuck
+ // on a single large task. And throttle sum total
+ // to not cause lags when multiple large fetches
+ // returned results.
+ const F32 AIS_TASK_EXPIRY_SECONDS = 0.008f;
+ const F32 AIS_BATCH_EXPIRY_SECONDS = 0.010f;
typedef std::map<LLUUID,size_t> uuid_int_map_t;
uuid_int_map_t mCatDescendentDeltas;
@@ -154,7 +158,9 @@ private:
uuid_list_t mCategoryIds;
bool mFetch;
S32 mFetchDepth;
- LLTimer mTimer;
+ LLTimer mTaskTimer;
+ static LLTimer sBatchTimer;
+ static U32 sBatchFrameCount;
AISAPI::COMMAND_TYPE mType;
};
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 2b318dcf5f..018d4c4bba 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1486,11 +1486,11 @@ bool LLFace::getGeometryVolume(const LLVolume& volume,
// They are used only to display a face selection marker
// (white square with a rounded cross at the center)
const auto& tt = gltf_mat->mTextureTransform[gltf_info_index];
- r = -tt.mRotation * 2;
- ms = tt.mScale[VX];
- mt = tt.mScale[VY];
- os += tt.mOffset[VX] + (ms - 1) / 2;
- ot -= tt.mOffset[VY] + (mt - 1) / 2;
+ LLGLTFMaterial::convertPBRTransformToTexture(
+ tt.mScale,
+ tt.mOffset,
+ tt.mRotation,
+ ms, mt, os, ot, r);
}
else
{
diff --git a/indra/newview/llfloaterbigpreview.cpp b/indra/newview/llfloaterbigpreview.cpp
deleted file mode 100644
index ba682494bb..0000000000
--- a/indra/newview/llfloaterbigpreview.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
-* @file llfloaterbigpreview.cpp
-* @brief Display of extended (big) preview for snapshots and SL Share
-* @author merov@lindenlab.com
-*
-* $LicenseInfo:firstyear=2013&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2013, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloaterbigpreview.h"
-#include "llsnapshotlivepreview.h"
-
-///////////////////////
-//LLFloaterBigPreview//
-///////////////////////
-
-LLFloaterBigPreview::LLFloaterBigPreview(const LLSD& key) : LLFloater(key),
- mPreviewPlaceholder(NULL),
- mFloaterOwner(NULL)
-{
-}
-
-LLFloaterBigPreview::~LLFloaterBigPreview()
-{
- if (mPreviewHandle.get())
- {
- mPreviewHandle.get()->die();
- }
-}
-
-void LLFloaterBigPreview::onCancel()
-{
- closeFloater();
-}
-
-void LLFloaterBigPreview::closeOnFloaterOwnerClosing(LLFloater* floaterp)
-{
- if (isFloaterOwner(floaterp))
- {
- closeFloater();
- }
-}
-
-bool LLFloaterBigPreview::postBuild()
-{
- mPreviewPlaceholder = getChild<LLUICtrl>("big_preview_placeholder");
- return LLFloater::postBuild();
-}
-
-void LLFloaterBigPreview::draw()
-{
- LLFloater::draw();
-
- LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get());
-
- // Display the preview if one is available
- if (previewp && previewp->getBigThumbnailImage())
- {
- // Get the preview rect
- const LLRect& preview_rect = mPreviewPlaceholder->getRect();
-
- // Get the preview texture size
- S32 thumbnail_w = previewp->getBigThumbnailWidth();
- S32 thumbnail_h = previewp->getBigThumbnailHeight();
-
- // Compute the scaling ratio and the size of the final texture in the rect: we want to prevent anisotropic scaling (distorted in x and y)
- F32 ratio = llmax((F32)(thumbnail_w)/(F32)(preview_rect.getWidth()), (F32)(thumbnail_h)/(F32)(preview_rect.getHeight()));
- thumbnail_w = (S32)((F32)(thumbnail_w)/ratio);
- thumbnail_h = (S32)((F32)(thumbnail_h)/ratio);
-
- // Compute the preview offset within the preview rect: we want to center that preview in the available rect
- const S32 local_offset_x = (preview_rect.getWidth() - thumbnail_w) / 2 ;
- const S32 local_offset_y = (preview_rect.getHeight() - thumbnail_h) / 2 ;
-
- // Compute preview offset within the floater rect
- S32 offset_x = preview_rect.mLeft + local_offset_x;
- S32 offset_y = preview_rect.mBottom + local_offset_y;
-
- gGL.matrixMode(LLRender::MM_MODELVIEW);
- // Apply floater transparency to the texture unless the floater is focused.
- F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();
- LLColor4 color = LLColor4::white;
-
- // Draw the preview texture
- gl_draw_scaled_image(offset_x, offset_y,
- thumbnail_w, thumbnail_h,
- previewp->getBigThumbnailImage(), color % alpha);
- }
-}
-
diff --git a/indra/newview/llfloaterbigpreview.h b/indra/newview/llfloaterbigpreview.h
deleted file mode 100644
index 1d5804acf5..0000000000
--- a/indra/newview/llfloaterbigpreview.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
-* @file llfloaterbigpreview.h
-* @brief Display of extended (big) preview for snapshots
-* @author merov@lindenlab.com
-*
-* $LicenseInfo:firstyear=2013&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2013, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-#ifndef LL_LLFLOATERBIGPREVIEW_H
-#define LL_LLFLOATERBIGPREVIEW_H
-
-#include "llfloater.h"
-
-class LLFloaterBigPreview : public LLFloater
-{
-public:
- LLFloaterBigPreview(const LLSD& key);
- ~LLFloaterBigPreview();
-
- bool postBuild();
- void draw();
- void onCancel();
-
- void setPreview(LLView* previewp) { mPreviewHandle = previewp->getHandle(); }
- void setFloaterOwner(LLFloater* floaterp) { mFloaterOwner = floaterp; }
- bool isFloaterOwner(LLFloater* floaterp) const { return (mFloaterOwner == floaterp); }
- void closeOnFloaterOwnerClosing(LLFloater* floaterp);
-
-private:
- LLHandle<LLView> mPreviewHandle;
- LLUICtrl* mPreviewPlaceholder;
- LLFloater* mFloaterOwner;
-};
-
-#endif // LL_LLFLOATERBIGPREVIEW_H
-
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index 84a9fad708..6d642638b3 100644
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -142,7 +142,7 @@ void LLFloaterIMSession::onClickCloseBtn(bool app_qutting)
{
if (app_qutting)
{
- LLFloaterIMSessionTab::onClickCloseBtn();
+ LLFloaterIMSessionTab::onClickCloseBtn(app_qutting);
return;
}
diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp
index 65c13797ac..453161b792 100644
--- a/indra/newview/llfloaterimsessiontab.cpp
+++ b/indra/newview/llfloaterimsessiontab.cpp
@@ -48,6 +48,7 @@
#include "llfloaterimnearbychat.h"
#include "llgroupiconctrl.h"
#include "lllayoutstack.h"
+#include "llnotificationsutil.h"
#include "llpanelemojicomplete.h"
#include "lltoolbarview.h"
@@ -1417,3 +1418,20 @@ bool LLFloaterIMSessionTab::handleKeyHere(KEY key, MASK mask )
}
return handled;
}
+
+void LLFloaterIMSessionTab::onClickCloseBtn(bool app_quitting)
+{
+ bool is_ad_hoc = (mSession ? mSession->isAdHocSessionType() : false);
+ if (is_ad_hoc && !app_quitting)
+ {
+ LLNotificationsUtil::add("ConfirmLeaveAdhoc", LLSD(), LLSD(), [this](const LLSD& notification, const LLSD& response)
+ {
+ if (0 == LLNotificationsUtil::getSelectedOption(notification, response))
+ closeFloater();
+ });
+ }
+ else
+ {
+ closeFloater();
+ }
+}
diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h
index 6d04d622e1..b27ac1b8f9 100644
--- a/indra/newview/llfloaterimsessiontab.h
+++ b/indra/newview/llfloaterimsessiontab.h
@@ -85,6 +85,8 @@ public:
void closeFloater(bool app_quitting = false) override;
void deleteAllChildren() override;
+ virtual void onClickCloseBtn(bool app_quitting = false) override;
+
// Handle the left hand participant list widgets
void addConversationViewParticipant(LLConversationItem* item, bool update_view = true);
void removeConversationViewParticipant(const LLUUID& participant_id);
diff --git a/indra/newview/llfloaterpostprocess.cpp b/indra/newview/llfloaterpostprocess.cpp
deleted file mode 100644
index 616c13cdc7..0000000000
--- a/indra/newview/llfloaterpostprocess.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-/**
- * @file llfloaterpostprocess.cpp
- * @brief LLFloaterPostProcess class definition
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloaterpostprocess.h"
-
-#include "llsliderctrl.h"
-#include "llcheckboxctrl.h"
-#include "llnotificationsutil.h"
-#include "lluictrlfactory.h"
-#include "llviewerdisplay.h"
-#include "llpostprocess.h"
-#include "llcombobox.h"
-#include "lllineeditor.h"
-#include "llviewerwindow.h"
-
-
-LLFloaterPostProcess::LLFloaterPostProcess(const LLSD& key)
- : LLFloater(key)
-{
-}
-
-LLFloaterPostProcess::~LLFloaterPostProcess()
-{
-
-
-}
-bool LLFloaterPostProcess::postBuild()
-{
- /// Color Filter Callbacks
- childSetCommitCallback("ColorFilterToggle", &LLFloaterPostProcess::onBoolToggle, (char*)"enable_color_filter");
- //childSetCommitCallback("ColorFilterGamma", &LLFloaterPostProcess::onFloatControlMoved, &(gPostProcess->tweaks.gamma()));
- childSetCommitCallback("ColorFilterBrightness", &LLFloaterPostProcess::onFloatControlMoved, (char*)"brightness");
- childSetCommitCallback("ColorFilterSaturation", &LLFloaterPostProcess::onFloatControlMoved, (char*)"saturation");
- childSetCommitCallback("ColorFilterContrast", &LLFloaterPostProcess::onFloatControlMoved, (char*)"contrast");
-
- childSetCommitCallback("ColorFilterBaseR", &LLFloaterPostProcess::onColorControlRMoved, (char*)"contrast_base");
- childSetCommitCallback("ColorFilterBaseG", &LLFloaterPostProcess::onColorControlGMoved, (char*)"contrast_base");
- childSetCommitCallback("ColorFilterBaseB", &LLFloaterPostProcess::onColorControlBMoved, (char*)"contrast_base");
- childSetCommitCallback("ColorFilterBaseI", &LLFloaterPostProcess::onColorControlIMoved, (char*)"contrast_base");
-
- /// Night Vision Callbacks
- childSetCommitCallback("NightVisionToggle", &LLFloaterPostProcess::onBoolToggle, (char*)"enable_night_vision");
- childSetCommitCallback("NightVisionBrightMult", &LLFloaterPostProcess::onFloatControlMoved, (char*)"brightness_multiplier");
- childSetCommitCallback("NightVisionNoiseSize", &LLFloaterPostProcess::onFloatControlMoved, (char*)"noise_size");
- childSetCommitCallback("NightVisionNoiseStrength", &LLFloaterPostProcess::onFloatControlMoved, (char*)"noise_strength");
-
- /// Bloom Callbacks
- childSetCommitCallback("BloomToggle", &LLFloaterPostProcess::onBoolToggle, (char*)"enable_bloom");
- childSetCommitCallback("BloomExtract", &LLFloaterPostProcess::onFloatControlMoved, (char*)"extract_low");
- childSetCommitCallback("BloomSize", &LLFloaterPostProcess::onFloatControlMoved, (char*)"bloom_width");
- childSetCommitCallback("BloomStrength", &LLFloaterPostProcess::onFloatControlMoved, (char*)"bloom_strength");
-
- // Effect loading and saving.
- LLComboBox* comboBox = getChild<LLComboBox>("PPEffectsCombo");
- getChild<LLComboBox>("PPLoadEffect")->setCommitCallback(boost::bind(&LLFloaterPostProcess::onLoadEffect, this, comboBox));
- comboBox->setCommitCallback(boost::bind(&LLFloaterPostProcess::onChangeEffectName, this, _1));
-
- LLLineEditor* editBox = getChild<LLLineEditor>("PPEffectNameEditor");
- getChild<LLComboBox>("PPSaveEffect")->setCommitCallback(boost::bind(&LLFloaterPostProcess::onSaveEffect, this, editBox));
-
- syncMenu();
- return true;
-}
-
-// Bool Toggle
-void LLFloaterPostProcess::onBoolToggle(LLUICtrl* ctrl, void* userData)
-{
- char const * boolVariableName = (char const *)userData;
-
- // check the bool
- LLCheckBoxCtrl* cbCtrl = static_cast<LLCheckBoxCtrl*>(ctrl);
- gPostProcess->tweaks[boolVariableName] = cbCtrl->getValue();
-}
-
-// Float Moved
-void LLFloaterPostProcess::onFloatControlMoved(LLUICtrl* ctrl, void* userData)
-{
- char const * floatVariableName = (char const *)userData;
- LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl);
- gPostProcess->tweaks[floatVariableName] = sldrCtrl->getValue();
-}
-
-// Color Moved
-void LLFloaterPostProcess::onColorControlRMoved(LLUICtrl* ctrl, void* userData)
-{
- char const * floatVariableName = (char const *)userData;
- LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl);
- gPostProcess->tweaks[floatVariableName][0] = sldrCtrl->getValue();
-}
-
-// Color Moved
-void LLFloaterPostProcess::onColorControlGMoved(LLUICtrl* ctrl, void* userData)
-{
- char const * floatVariableName = (char const *)userData;
- LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl);
- gPostProcess->tweaks[floatVariableName][1] = sldrCtrl->getValue();
-}
-
-// Color Moved
-void LLFloaterPostProcess::onColorControlBMoved(LLUICtrl* ctrl, void* userData)
-{
- char const * floatVariableName = (char const *)userData;
- LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl);
- gPostProcess->tweaks[floatVariableName][2] = sldrCtrl->getValue();
-}
-
-// Color Moved
-void LLFloaterPostProcess::onColorControlIMoved(LLUICtrl* ctrl, void* userData)
-{
- char const * floatVariableName = (char const *)userData;
- LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl);
- gPostProcess->tweaks[floatVariableName][3] = sldrCtrl->getValue();
-}
-
-void LLFloaterPostProcess::onLoadEffect(LLComboBox* comboBox)
-{
- LLSD::String effectName(comboBox->getSelectedValue().asString());
-
- gPostProcess->setSelectedEffect(effectName);
-
- syncMenu();
-}
-
-void LLFloaterPostProcess::onSaveEffect(LLLineEditor* editBox)
-{
- std::string effectName(editBox->getValue().asString());
-
- if (gPostProcess->mAllEffects.has(effectName))
- {
- LLSD payload;
- payload["effect_name"] = effectName;
- LLNotificationsUtil::add("PPSaveEffectAlert", LLSD(), payload, boost::bind(&LLFloaterPostProcess::saveAlertCallback, this, _1, _2));
- }
- else
- {
- gPostProcess->saveEffect(effectName);
- syncMenu();
- }
-}
-
-void LLFloaterPostProcess::onChangeEffectName(LLUICtrl* ctrl)
-{
- // get the combo box and name
- LLLineEditor* editBox = getChild<LLLineEditor>("PPEffectNameEditor");
-
- // set the parameter's new name
- editBox->setValue(ctrl->getValue());
-}
-
-bool LLFloaterPostProcess::saveAlertCallback(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-
- // if they choose save, do it. Otherwise, don't do anything
- if (option == 0)
- {
- gPostProcess->saveEffect(notification["payload"]["effect_name"].asString());
-
- syncMenu();
- }
- return false;
-}
-
-void LLFloaterPostProcess::syncMenu()
-{
- // add the combo boxe contents
- LLComboBox* comboBox = getChild<LLComboBox>("PPEffectsCombo");
-
- comboBox->removeall();
-
- LLSD::map_const_iterator currEffect;
- for(currEffect = gPostProcess->mAllEffects.beginMap();
- currEffect != gPostProcess->mAllEffects.endMap();
- ++currEffect)
- {
- comboBox->add(currEffect->first);
- }
-
- // set the current effect as selected.
- comboBox->selectByValue(gPostProcess->getSelectedEffect());
-
- /// Sync Color Filter Menu
- getChild<LLUICtrl>("ColorFilterToggle")->setValue(gPostProcess->tweaks.useColorFilter());
- //getChild<LLUICtrl>("ColorFilterGamma")->setValue(gPostProcess->tweaks.gamma());
- getChild<LLUICtrl>("ColorFilterBrightness")->setValue(gPostProcess->tweaks.brightness());
- getChild<LLUICtrl>("ColorFilterSaturation")->setValue(gPostProcess->tweaks.saturation());
- getChild<LLUICtrl>("ColorFilterContrast")->setValue(gPostProcess->tweaks.contrast());
- getChild<LLUICtrl>("ColorFilterBaseR")->setValue(gPostProcess->tweaks.contrastBaseR());
- getChild<LLUICtrl>("ColorFilterBaseG")->setValue(gPostProcess->tweaks.contrastBaseG());
- getChild<LLUICtrl>("ColorFilterBaseB")->setValue(gPostProcess->tweaks.contrastBaseB());
- getChild<LLUICtrl>("ColorFilterBaseI")->setValue(gPostProcess->tweaks.contrastBaseIntensity());
-
- /// Sync Night Vision Menu
- getChild<LLUICtrl>("NightVisionToggle")->setValue(gPostProcess->tweaks.useNightVisionShader());
- getChild<LLUICtrl>("NightVisionBrightMult")->setValue(gPostProcess->tweaks.brightMult());
- getChild<LLUICtrl>("NightVisionNoiseSize")->setValue(gPostProcess->tweaks.noiseSize());
- getChild<LLUICtrl>("NightVisionNoiseStrength")->setValue(gPostProcess->tweaks.noiseStrength());
-
- /// Sync Bloom Menu
- getChild<LLUICtrl>("BloomToggle")->setValue(LLSD(gPostProcess->tweaks.useBloomShader()));
- getChild<LLUICtrl>("BloomExtract")->setValue(gPostProcess->tweaks.extractLow());
- getChild<LLUICtrl>("BloomSize")->setValue(gPostProcess->tweaks.bloomWidth());
- getChild<LLUICtrl>("BloomStrength")->setValue(gPostProcess->tweaks.bloomStrength());
-}
diff --git a/indra/newview/llfloaterpostprocess.h b/indra/newview/llfloaterpostprocess.h
deleted file mode 100644
index 50b48d8410..0000000000
--- a/indra/newview/llfloaterpostprocess.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @file llfloaterpostprocess.h
- * @brief LLFloaterPostProcess class definition
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERPOSTPROCESS_H
-#define LL_LLFLOATERPOSTPROCESS_H
-
-#include "llfloater.h"
-
-class LLButton;
-class LLComboBox;
-class LLLineEditor;
-class LLSliderCtrl;
-class LLTabContainer;
-class LLPanelPermissions;
-class LLPanelObject;
-class LLPanelVolume;
-class LLPanelContents;
-class LLPanelFace;
-
-/**
- * Menu for adjusting the post process settings of the world
- */
-class LLFloaterPostProcess : public LLFloater
-{
-public:
-
- LLFloaterPostProcess(const LLSD& key);
- virtual ~LLFloaterPostProcess();
- bool postBuild();
-
- /// post process callbacks
- static void onBoolToggle(LLUICtrl* ctrl, void* userData);
- static void onFloatControlMoved(LLUICtrl* ctrl, void* userData);
- static void onColorControlRMoved(LLUICtrl* ctrl, void* userData);
- static void onColorControlGMoved(LLUICtrl* ctrl, void* userData);
- static void onColorControlBMoved(LLUICtrl* ctrl, void* userData);
- static void onColorControlIMoved(LLUICtrl* ctrl, void* userData);
- void onLoadEffect(LLComboBox* comboBox);
- void onSaveEffect(LLLineEditor* editBox);
- void onChangeEffectName(LLUICtrl* ctrl);
-
- /// prompts a user when overwriting an effect
- bool saveAlertCallback(const LLSD& notification, const LLSD& response);
-
- /// sync up sliders
- void syncMenu();
-};
-
-#endif
diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp
index 9b7a4e5134..3c84f5b459 100644
--- a/indra/newview/llfloatersearch.cpp
+++ b/indra/newview/llfloatersearch.cpp
@@ -123,19 +123,32 @@ void LLFloaterSearch::initiateSearch(const LLSD& tokens)
subs["COLLECTION"] = "";
if (subs["TYPE"] == "standard")
{
+ std::string collection_args;
if (mCollectionType.find(collection) != mCollectionType.end())
{
- subs["COLLECTION"] = "&collection_chosen=" + std::string(collection);
+ collection_args = "&collection_chosen=" + std::string(collection);
}
- else
+ else if (tokens.has("collections") && tokens["collections"].isArray())
+ {
+ const LLSD &sd = tokens["collections"];
+ for (LLSD::array_const_iterator it = sd.beginArray();
+ it != sd.endArray();
+ ++it)
+ {
+ if (mCollectionType.find(it->asString()) != mCollectionType.end())
+ {
+ collection_args += "&collection_chosen=" + std::string(*it);
+ }
+ }
+ }
+ if (collection_args.empty())
{
- std::string collection_args("");
for (std::set<std::string>::iterator it = mCollectionType.begin(); it != mCollectionType.end(); ++it)
{
collection_args += "&collection_chosen=" + std::string(*it);
}
- subs["COLLECTION"] = collection_args;
}
+ subs["COLLECTION"] = collection_args;
}
// Default to PG
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index faf7ed0d8c..83d7a92846 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1043,7 +1043,7 @@ bool LLFloaterSnapshot::postBuild()
getChild<LLComboBox>("profile_size_combo")->selectNthItem(0);
getChild<LLComboBox>("postcard_size_combo")->selectNthItem(0);
getChild<LLComboBox>("texture_size_combo")->selectNthItem(0);
- getChild<LLComboBox>("local_size_combo")->selectNthItem(8);
+ getChild<LLComboBox>("local_size_combo")->selectNthItem(0);
getChild<LLComboBox>("local_format_combo")->selectNthItem(0);
impl->mPreviewHandle = previewp->getHandle();
diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
deleted file mode 100644
index f11c5c0ad8..0000000000
--- a/indra/newview/llfloatersounddevices.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * @file llfloatersounddevices.cpp
- * @author Leyla Farazha
- * @brief Sound Preferences used for minimal skin
- *
-* $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatersounddevices.h"
-
-#include "lldraghandle.h"
-
-#include "llpanelvoicedevicesettings.h"
-
-// Library includes
-#include "indra_constants.h"
-
-// protected
-LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key)
-: LLTransientDockableFloater(NULL, false, key)
-{
- LLTransientFloaterMgr::getInstance()->addControlView(this);
-
- // force docked state since this floater doesn't save it between recreations
- setDocked(true);
-}
-
-LLFloaterSoundDevices::~LLFloaterSoundDevices()
-{
- LLTransientFloaterMgr::getInstance()->removeControlView(this);
-}
-
-// virtual
-bool LLFloaterSoundDevices::postBuild()
-{
- LLTransientDockableFloater::postBuild();
-
- updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
-
- LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel");
- if (panel)
- {
- panel->setUseTuningMode(false);
- getChild<LLUICtrl>("voice_input_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel));
- getChild<LLUICtrl>("voice_output_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel));
- getChild<LLUICtrl>("mic_volume_slider")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel));
- }
- return true;
-}
-
-//virtual
-void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/)
-{
- LLTransientDockableFloater::setDocked(docked, pop_on_undock);
-}
-
-// virtual
-void LLFloaterSoundDevices::setFocus(bool b)
-{
- LLTransientDockableFloater::setFocus(b);
-
- // Force using active floater transparency
- // We have to override setFocus() for because selecting an item of the
- // combobox causes the floater to lose focus and thus become transparent.
- updateTransparency(TT_ACTIVE);
-}
diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h
deleted file mode 100644
index 9b21b62747..0000000000
--- a/indra/newview/llfloatersounddevices.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file llfloatersounddevices.h
- * @author Leyla Farazha
- * @brief Sound Preferences used for minimal skin
- *
-* $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERSOUNDDEVICES_H
-#define LL_LLFLOATERSOUNDDEVICES_H
-
-#include "lltransientdockablefloater.h"
-
-class LLFloaterSoundDevices : public LLTransientDockableFloater
-{
-public:
-
- LOG_CLASS(LLFloaterSoundDevices);
-
- LLFloaterSoundDevices(const LLSD& key);
- ~LLFloaterSoundDevices();
-
- bool postBuild() override;
- void setDocked(bool docked, bool pop_on_undock = true) override;
- void setFocus(bool b) override;
-};
-
-
-#endif //LL_LLFLOATERSOUNDDEVICES_H
-
diff --git a/indra/newview/llfloatervoiceeffect.cpp b/indra/newview/llfloatervoiceeffect.cpp
deleted file mode 100644
index 9f7c9aba87..0000000000
--- a/indra/newview/llfloatervoiceeffect.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
- * @file llfloatervoiceeffect.cpp
- * @author Aimee
- * @brief Selection and preview of voice effect.
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatervoiceeffect.h"
-
-#include "llscrolllistctrl.h"
-#include "lltrans.h"
-#include "llweb.h"
-
-LLFloaterVoiceEffect::LLFloaterVoiceEffect(const LLSD& key)
- : LLFloater(key)
-{
- mCommitCallbackRegistrar.add("VoiceEffect.Record", boost::bind(&LLFloaterVoiceEffect::onClickRecord, this));
- mCommitCallbackRegistrar.add("VoiceEffect.Play", boost::bind(&LLFloaterVoiceEffect::onClickPlay, this));
- mCommitCallbackRegistrar.add("VoiceEffect.Stop", boost::bind(&LLFloaterVoiceEffect::onClickStop, this));
-// mCommitCallbackRegistrar.add("VoiceEffect.Activate", boost::bind(&LLFloaterVoiceEffect::onClickActivate, this));
-}
-
-// virtual
-LLFloaterVoiceEffect::~LLFloaterVoiceEffect()
-{
- if(LLVoiceClient::instanceExists())
- {
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->removeObserver(this);
- }
- }
-}
-
-// virtual
-bool LLFloaterVoiceEffect::postBuild()
-{
- setDefaultBtn("record_btn");
- getChild<LLButton>("record_btn")->setFocus(true);
- getChild<LLUICtrl>("voice_morphing_link")->setTextArg("[URL]", LLTrans::getString("voice_morphing_url"));
-
- mVoiceEffectList = getChild<LLScrollListCtrl>("voice_effect_list");
- if (mVoiceEffectList)
- {
- mVoiceEffectList->setCommitCallback(boost::bind(&LLFloaterVoiceEffect::onClickPlay, this));
-// mVoiceEffectList->setDoubleClickCallback(boost::bind(&LLFloaterVoiceEffect::onClickActivate, this));
- }
-
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->addObserver(this);
-
- // Disconnect from the current voice channel ready to record a voice sample for previewing
- effect_interface->enablePreviewBuffer(true);
- }
-
- refreshEffectList();
- updateControls();
-
- return true;
-}
-
-// virtual
-void LLFloaterVoiceEffect::onClose(bool app_quitting)
-{
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->enablePreviewBuffer(false);
- }
-}
-
-void LLFloaterVoiceEffect::refreshEffectList()
-{
- if (!mVoiceEffectList)
- {
- return;
- }
-
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (!effect_interface)
- {
- mVoiceEffectList->setEnabled(false);
- return;
- }
-
- LL_DEBUGS("Voice")<< "Rebuilding Voice Morph list."<< LL_ENDL;
-
- // Preserve selected items and scroll position
- S32 scroll_pos = mVoiceEffectList->getScrollPos();
- uuid_vec_t selected_items;
- std::vector<LLScrollListItem*> items = mVoiceEffectList->getAllSelected();
- for(std::vector<LLScrollListItem*>::const_iterator it = items.begin(); it != items.end(); it++)
- {
- selected_items.push_back((*it)->getUUID());
- }
-
- mVoiceEffectList->deleteAllItems();
-
- {
- // Add the "No Voice Morph" entry
- LLSD element;
-
- element["id"] = LLUUID::null;
- element["columns"][NAME_COLUMN]["column"] = "name";
- element["columns"][NAME_COLUMN]["value"] = getString("no_voice_effect");
- element["columns"][NAME_COLUMN]["font"]["style"] = "BOLD";
-
- LLScrollListItem* sl_item = mVoiceEffectList->addElement(element, ADD_BOTTOM);
- // *HACK: Copied from llfloatergesture.cpp : ["font"]["style"] does not affect font style :(
- if(sl_item)
- {
- ((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(LLFontGL::BOLD);
- }
- }
-
- // Add each Voice Morph template, if there are any (template list includes all usable effects)
- const voice_effect_list_t& template_list = effect_interface->getVoiceEffectTemplateList();
- if (!template_list.empty())
- {
- for (voice_effect_list_t::const_iterator it = template_list.begin(); it != template_list.end(); ++it)
- {
- const LLUUID& effect_id = it->second;
-
- std::string localized_effect = "effect_" + it->first;
- std::string effect_name = hasString(localized_effect) ? getString(localized_effect) : it->first; // XML contains localized effects names
-
- LLSD effect_properties = effect_interface->getVoiceEffectProperties(effect_id);
-
- // Tag the active effect.
- if (effect_id == LLVoiceClient::instance().getVoiceEffectDefault())
- {
- effect_name += " " + getString("active_voice_effect");
- }
-
- // Tag available effects that are new this session
- if (effect_properties["is_new"].asBoolean())
- {
- effect_name += " " + getString("new_voice_effect");
- }
-
- LLDate expiry_date = effect_properties["expiry_date"].asDate();
- bool is_template_only = effect_properties["template_only"].asBoolean();
-
- std::string font_style = "NORMAL";
- if (!is_template_only)
- {
- font_style = "BOLD";
- }
-
- LLSD element;
- element["id"] = effect_id;
-
- element["columns"][NAME_COLUMN]["column"] = "name";
- element["columns"][NAME_COLUMN]["value"] = effect_name;
- element["columns"][NAME_COLUMN]["font"]["style"] = font_style;
-
- element["columns"][1]["column"] = "expires";
- if (!is_template_only)
- {
- element["columns"][DATE_COLUMN]["value"] = expiry_date;
- element["columns"][DATE_COLUMN]["type"] = "date";
- }
- else {
- element["columns"][DATE_COLUMN]["value"] = getString("unsubscribed_voice_effect");
- }
-// element["columns"][DATE_COLUMN]["font"]["style"] = "NORMAL";
-
- LLScrollListItem* sl_item = mVoiceEffectList->addElement(element, ADD_BOTTOM);
- // *HACK: Copied from llfloatergesture.cpp : ["font"]["style"] does not affect font style :(
- if(sl_item)
- {
- LLFontGL::StyleFlags style = is_template_only ? LLFontGL::NORMAL : LLFontGL::BOLD;
- LLScrollListText* slt = dynamic_cast<LLScrollListText*>(sl_item->getColumn(0));
- llassert(slt);
- if (slt)
- {
- slt->setFontStyle(style);
- }
- }
- }
- }
-
- // Re-select items that were selected before, and restore the scroll position
- for(uuid_vec_t::iterator it = selected_items.begin(); it != selected_items.end(); it++)
- {
- mVoiceEffectList->selectByID(*it);
- }
- mVoiceEffectList->setScrollPos(scroll_pos);
- mVoiceEffectList->setEnabled(true);
-}
-
-void LLFloaterVoiceEffect::updateControls()
-{
- bool recording = false;
-
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- recording = effect_interface->isPreviewRecording();
- }
-
- getChild<LLButton>("record_btn")->setVisible(!recording);
- getChild<LLButton>("record_stop_btn")->setVisible(recording);
-}
-
-// virtual
-void LLFloaterVoiceEffect::onVoiceEffectChanged(bool effect_list_updated)
-{
- if (effect_list_updated)
- {
- refreshEffectList();
- }
- updateControls();
-}
-
-void LLFloaterVoiceEffect::onClickRecord()
-{
- LL_DEBUGS("Voice") << "Record clicked" << LL_ENDL;
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->recordPreviewBuffer();
- }
- updateControls();
-}
-
-void LLFloaterVoiceEffect::onClickPlay()
-{
- LL_DEBUGS("Voice") << "Play clicked" << LL_ENDL;
- if (!mVoiceEffectList)
- {
- return;
- }
-
- const LLUUID& effect_id = mVoiceEffectList->getCurrentID();
-
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->playPreviewBuffer(effect_id);
- }
- updateControls();
-}
-
-void LLFloaterVoiceEffect::onClickStop()
-{
- LL_DEBUGS("Voice") << "Stop clicked" << LL_ENDL;
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->stopPreviewBuffer();
- }
- updateControls();
-}
-
-//void LLFloaterVoiceEffect::onClickActivate()
-//{
-// LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
-// if (effect_interface && mVoiceEffectList)
-// {
-// effect_interface->setVoiceEffect(mVoiceEffectList->getCurrentID());
-// }
-//}
-
diff --git a/indra/newview/llfloatervoiceeffect.h b/indra/newview/llfloatervoiceeffect.h
deleted file mode 100644
index 323beb64ae..0000000000
--- a/indra/newview/llfloatervoiceeffect.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @file llfloatervoiceeffect.h
- * @author Aimee
- * @brief Selection and preview of voice effects.
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERVOICEEFFECT_H
-#define LL_LLFLOATERVOICEEFFECT_H
-
-#include "llfloater.h"
-#include "llvoiceclient.h"
-
-class LLButton;
-class LLScrollListCtrl;
-
-class LLFloaterVoiceEffect
- : public LLFloater
- , public LLVoiceEffectObserver
-{
-public:
- LOG_CLASS(LLFloaterVoiceEffect);
-
- LLFloaterVoiceEffect(const LLSD& key);
- virtual ~LLFloaterVoiceEffect();
-
- bool postBuild() override;
- void onClose(bool app_quitting) override;
-
-private:
- enum ColumnIndex
- {
- NAME_COLUMN = 0,
- DATE_COLUMN = 1,
- };
-
- void refreshEffectList();
- void updateControls();
-
- /// Called by voice effect provider when voice effect list is changed.
- virtual void onVoiceEffectChanged(bool effect_list_updated) override;
-
- void onClickRecord();
- void onClickPlay();
- void onClickStop();
-// void onClickActivate();
-
- LLUUID mSelectedID;
- LLScrollListCtrl* mVoiceEffectList;
-};
-
-#endif
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 458ea24d33..7522ea4907 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -2555,7 +2555,7 @@ bool get_is_favorite(const LLUUID& obj_id)
return obj && obj->getIsFavorite();
}
- return object->getIsFavorite();
+ return object && object->getIsFavorite();
}
void set_favorite(const LLUUID& obj_id, bool favorite)
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index ed342935ad..20bda5039d 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -3331,6 +3331,8 @@ void LLMeshRepoThread::notifyLoadedMeshes()
loaded_queue.swap(mLoadedQ);
mLoadedMutex->unlock();
+ LL_PROFILE_ZONE_NAMED("notify loaded meshes");
+
update_metrics = true;
// Process the elements free of the lock
@@ -3362,6 +3364,8 @@ void LLMeshRepoThread::notifyLoadedMeshes()
unavil_queue.swap(mUnavailableQ);
mLoadedMutex->unlock();
+ LL_PROFILE_ZONE_NAMED("notify unavail meshes");
+
update_metrics = true;
// Process the elements free of the lock
@@ -3380,6 +3384,7 @@ void LLMeshRepoThread::notifyLoadedMeshes()
{
if (mLoadedMutex->trylock())
{
+ LL_PROFILE_ZONE_NAMED("notify misc meshes");
std::deque<LLPointer<LLMeshSkinInfo>> skin_info_q;
std::deque<UUIDBasedRequest> skin_info_unavail_q;
std::list<LLModel::Decomposition*> decomp_q;
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index dfead5ee8a..9a0612e9f9 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -712,7 +712,14 @@ void LLNavigationBar::resizeLayoutPanel()
}
void LLNavigationBar::invokeSearch(std::string search_text)
{
- LLFloaterReg::showInstance("search", LLSD().with("category", "standard").with("query", LLSD(search_text)));
+ LLSD key;
+ key["category"] = "standard";
+ key["query"] = search_text;
+ LLSD collections = LLSD::emptyArray();
+ collections.append("destinations");
+ collections.append("places");
+ key["collections"] = collections;
+ LLFloaterReg::showInstance("search", key);
}
void LLNavigationBar::clearHistoryCache()
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index af472c4259..63ec43458b 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -47,6 +47,7 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llappviewer.h" // for gDisconnected
+#include "llavataractions.h"
#include "llcallingcard.h" // LLAvatarTracker
#include "llfloaterland.h"
#include "llfloaterworldmap.h"
@@ -397,20 +398,41 @@ void LLNetMap::draw()
LLWorld::getInstance()->getAvatars(&avatar_ids, &positions, gAgentCamera.getCameraPositionGlobal());
- // Draw avatars
+ std::vector<std::pair<U32, bool>> indexed_avatars;
+ indexed_avatars.reserve(avatar_ids.size());
for (U32 i = 0; i < avatar_ids.size(); i++)
{
- LLUUID uuid = avatar_ids[i];
+ indexed_avatars.emplace_back(i, LLAvatarActions::isFriend(avatar_ids[i]));
+ }
+
+ // Sort avatars so non-friends are drawn first and friend dots will appear on top
+ std::sort(indexed_avatars.begin(), indexed_avatars.end(),
+ [](const auto& a, const auto& b) { return a.second < b.second; });
+
+ uuid_vec_t sorted_avatar_ids;
+ std::vector<LLVector3d> sorted_positions;
+ sorted_avatar_ids.reserve(avatar_ids.size());
+ sorted_positions.reserve(positions.size());
+
+ // Reorder avatar_ids and positions based on sorted indices
+ for (const auto& indexed_avatar : indexed_avatars)
+ {
+ sorted_avatar_ids.push_back(avatar_ids[indexed_avatar.first]);
+ sorted_positions.push_back(positions[indexed_avatar.first]);
+ }
+
+ // Draw avatars
+ for (U32 i = 0; i < sorted_avatar_ids.size(); i++)
+ {
+ LLUUID uuid = sorted_avatar_ids[i];
// Skip self, we'll draw it later
if (uuid == gAgent.getID()) continue;
- pos_map = globalPosToView(positions[i]);
-
- bool show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(uuid) != NULL);
+ pos_map = globalPosToView(sorted_positions[i]);
- LLColor4 color = show_as_friend ? map_avatar_friend_color : map_avatar_color;
+ LLColor4 color = LLAvatarActions::isFriend(uuid) ? map_avatar_friend_color : map_avatar_color;
- unknown_relative_z = positions[i].mdV[VZ] >= COARSEUPDATE_MAX_Z &&
+ unknown_relative_z = sorted_positions[i].mdV[VZ] >= COARSEUPDATE_MAX_Z &&
camera_position.mV[VZ] >= COARSEUPDATE_MAX_Z;
LLWorldMapView::drawAvatar(
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index ad7aa57842..04eebcefc1 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -216,14 +216,14 @@ bool LLPanelMainInventory::postBuild()
mWornItemsPanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mWornItemsPanel, _1, _2));
}
- LLInventoryPanel* favorites_panel = getChild<LLInventoryPanel>(FAVORITES);
- if (favorites_panel)
+ mFavoritesPanel = getChild<LLInventoryPanel>(FAVORITES);
+ if (mFavoritesPanel)
{
- favorites_panel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER));
- LLInventoryFilter& favorites_filter = favorites_panel->getFilter();
+ mFavoritesPanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER));
+ LLInventoryFilter& favorites_filter = mFavoritesPanel->getFilter();
favorites_filter.setEmptyLookupMessage("InventoryNoMatchingFavorites");
favorites_filter.markDefault();
- favorites_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, favorites_panel, _1, _2));
+ mFavoritesPanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mFavoritesPanel, _1, _2));
}
mSearchTypeCombo = getChild<LLComboBox>("search_type");
@@ -319,6 +319,10 @@ bool LLPanelMainInventory::postBuild()
menu->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", animation_upload_cost_str);
}
+ mFilterTabs->setTabVisibility(mRecentPanel, gSavedSettings.getBOOL("InventoryShowRecentTab"));
+ mFilterTabs->setTabVisibility(mWornItemsPanel, gSavedSettings.getBOOL("InventoryShowWornTab"));
+ mFilterTabs->setTabVisibility(mFavoritesPanel, gSavedSettings.getBOOL("InventoryShowFavoritesTab"));
+
// Trigger callback for focus received so we can deselect items in inbox/outbox
LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMainInventory::onFocusReceived, this));
@@ -1613,8 +1617,10 @@ void LLPanelMainInventory::initSingleFolderRoot(const LLUUID& start_folder_id)
void LLPanelMainInventory::initInventoryViews()
{
mAllItemsPanel->initializeViewBuilding();
- mRecentPanel->initializeViewBuilding();
- mWornItemsPanel->initializeViewBuilding();
+ if (gSavedSettings.getBOOL("InventoryShowRecentTab"))
+ mRecentPanel->initializeViewBuilding();
+ if (gSavedSettings.getBOOL("InventoryShowWornTab"))
+ mWornItemsPanel->initializeViewBuilding();
}
void LLPanelMainInventory::toggleViewMode()
@@ -2056,6 +2062,27 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
{
setViewMode(MODE_COMBINATION);
}
+
+ if (command_name == "toggle_recent_tab")
+ {
+ bool visibility = !gSavedSettings.getBOOL("InventoryShowRecentTab");
+ gSavedSettings.setBOOL("InventoryShowRecentTab", visibility);
+ mFilterTabs->setTabVisibility(mRecentPanel, visibility);
+ mRecentPanel->initializeViewBuilding();
+ }
+ if (command_name == "toggle_worn_tab")
+ {
+ bool visibility = !gSavedSettings.getBOOL("InventoryShowWornTab");
+ gSavedSettings.setBOOL("InventoryShowWornTab", visibility);
+ mFilterTabs->setTabVisibility(mWornItemsPanel, visibility);
+ mWornItemsPanel->initializeViewBuilding();
+ }
+ if (command_name == "toggle_favorites_tab")
+ {
+ bool visibility = !gSavedSettings.getBOOL("InventoryShowFavoritesTab");
+ gSavedSettings.setBOOL("InventoryShowFavoritesTab", visibility);
+ mFilterTabs->setTabVisibility(mFavoritesPanel, visibility);
+ }
}
void LLPanelMainInventory::onVisibilityChange( bool new_visibility )
@@ -2283,6 +2310,19 @@ bool LLPanelMainInventory::isActionChecked(const LLSD& userdata)
return isCombinationViewMode();
}
+ if (command_name == "recent_tab")
+ {
+ return mFilterTabs->getTabVisibility(mRecentPanel);
+ }
+ if (command_name == "worn_tab")
+ {
+ return mFilterTabs->getTabVisibility(mWornItemsPanel);
+ }
+ if (command_name == "favorites_tab")
+ {
+ return mFilterTabs->getTabVisibility(mFavoritesPanel);
+ }
+
return false;
}
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index a78c0c0fad..03650e7fc1 100644
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -199,6 +199,7 @@ private:
LLInventoryPanel* mAllItemsPanel = nullptr;
LLInventoryPanel* mRecentPanel = nullptr;
LLInventoryPanel* mWornItemsPanel = nullptr;
+ LLInventoryPanel* mFavoritesPanel = nullptr;
bool mResortActivePanel;
LLSaveFolderState* mSavedFolderState;
std::string mFilterText;
diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp
deleted file mode 100644
index a0129b2cb1..0000000000
--- a/indra/newview/llpanelvoiceeffect.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * @file llpanelvoiceeffect.cpp
- * @author Aimee
- * @brief Panel to select Voice Morphs.
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llpanelvoiceeffect.h"
-
-#include "llcombobox.h"
-#include "llfloaterreg.h"
-#include "llpanel.h"
-#include "lltrans.h"
-#include "lltransientfloatermgr.h"
-#include "llvoiceclient.h"
-#include "llweb.h"
-
-static LLPanelInjector<LLPanelVoiceEffect> t_panel_voice_effect("panel_voice_effect");
-
-LLPanelVoiceEffect::LLPanelVoiceEffect()
- : mVoiceEffectCombo(NULL)
-{
- mCommitCallbackRegistrar.add("Voice.CommitVoiceEffect", boost::bind(&LLPanelVoiceEffect::onCommitVoiceEffect, this));
-}
-
-LLPanelVoiceEffect::~LLPanelVoiceEffect()
-{
- LLView* combo_list_view = mVoiceEffectCombo->getChildView("ComboBox");
- LLTransientFloaterMgr::getInstance()->removeControlView(combo_list_view);
-
- if(LLVoiceClient::instanceExists())
- {
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->removeObserver(this);
- }
- }
-}
-
-// virtual
-bool LLPanelVoiceEffect::postBuild()
-{
- mVoiceEffectCombo = getChild<LLComboBox>("voice_effect");
-
- // Need to tell LLTransientFloaterMgr about the combo list, otherwise it can't
- // be clicked while in a docked floater as it extends outside the floater area.
- LLView* combo_list_view = mVoiceEffectCombo->getChildView("ComboBox");
- LLTransientFloaterMgr::getInstance()->addControlView(combo_list_view);
-
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (effect_interface)
- {
- effect_interface->addObserver(this);
- }
-
- update(true);
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-/// PRIVATE SECTION
-//////////////////////////////////////////////////////////////////////////
-
-void LLPanelVoiceEffect::onCommitVoiceEffect()
-{
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (!effect_interface)
- {
- mVoiceEffectCombo->setEnabled(false);
- return;
- }
-
- LLSD value = mVoiceEffectCombo->getValue();
- if (value.asInteger() == PREVIEW_VOICE_EFFECTS)
- {
- // Open the Voice Morph preview floater
- LLFloaterReg::showInstance("voice_effect");
- }
- else if (value.asInteger() == GET_VOICE_EFFECTS)
- {
- // Open the voice morphing info web page
- LLWeb::loadURL(LLTrans::getString("voice_morphing_url"));
- }
- else
- {
- effect_interface->setVoiceEffect(value.asUUID());
- }
-
- mVoiceEffectCombo->setValue(effect_interface->getVoiceEffect());
-}
-
-// virtual
-void LLPanelVoiceEffect::onVoiceEffectChanged(bool effect_list_updated)
-{
- update(effect_list_updated);
-}
-
-void LLPanelVoiceEffect::update(bool list_updated)
-{
- if (mVoiceEffectCombo)
- {
- LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
- if (!effect_interface) return;
- if (list_updated)
- {
- // Add the default "No Voice Morph" entry.
- mVoiceEffectCombo->removeall();
- mVoiceEffectCombo->add(getString("no_voice_effect"), LLUUID::null);
- mVoiceEffectCombo->addSeparator();
-
- // Add entries for each Voice Morph.
- const voice_effect_list_t& effect_list = effect_interface->getVoiceEffectList();
- if (!effect_list.empty())
- {
- for (voice_effect_list_t::const_iterator it = effect_list.begin(); it != effect_list.end(); ++it)
- {
- mVoiceEffectCombo->add(it->first, it->second, ADD_BOTTOM);
- }
-
- mVoiceEffectCombo->addSeparator();
- }
-
- // Add the fixed entries to go to the preview floater or marketing page.
- mVoiceEffectCombo->add(getString("preview_voice_effects"), PREVIEW_VOICE_EFFECTS);
- mVoiceEffectCombo->add(getString("get_voice_effects"), GET_VOICE_EFFECTS);
- }
-
- if (effect_interface && LLVoiceClient::instance().isVoiceWorking())
- {
- // Select the current Voice Morph.
- mVoiceEffectCombo->setValue(effect_interface->getVoiceEffect());
- mVoiceEffectCombo->setEnabled(true);
- }
- else
- {
- // If voice isn't working or Voice Effects are not supported disable the control.
- mVoiceEffectCombo->setValue(LLUUID::null);
- mVoiceEffectCombo->setEnabled(false);
- }
- }
-}
diff --git a/indra/newview/llpanelvoiceeffect.h b/indra/newview/llpanelvoiceeffect.h
deleted file mode 100644
index f920e41081..0000000000
--- a/indra/newview/llpanelvoiceeffect.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * @file llpanelvoiceeffect.h
- * @author Aimee
- * @brief Panel to select Voice Effects.
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_PANELVOICEEFFECT_H
-#define LL_PANELVOICEEFFECT_H
-
-#include "llpanel.h"
-#include "llvoiceclient.h"
-
-class LLComboBox;
-
-class LLPanelVoiceEffect
- : public LLPanel
- , public LLVoiceEffectObserver
-{
-public:
- LOG_CLASS(LLPanelVoiceEffect);
-
- LLPanelVoiceEffect();
- virtual ~LLPanelVoiceEffect();
-
- bool postBuild() override;
-
-private:
- void onCommitVoiceEffect();
- void update(bool list_updated);
-
- /// Called by voice effect provider when voice effect list is changed.
- void onVoiceEffectChanged(bool effect_list_updated) override;
-
- // Fixed entries in the Voice Morph list
- typedef enum e_voice_effect_combo_items
- {
- NO_VOICE_EFFECT = 0,
- PREVIEW_VOICE_EFFECTS = 1,
- GET_VOICE_EFFECTS = 2
- } EVoiceEffectComboItems;
-
- LLComboBox* mVoiceEffectCombo;
-};
-
-
-#endif //LL_PANELVOICEEFFECT_H
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index 9a991727b2..eefd19e153 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -79,6 +79,7 @@ LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id,
LLPreviewNotecard::~LLPreviewNotecard()
{
delete mLiveFile;
+ mEditor = nullptr;
}
bool LLPreviewNotecard::postBuild()
@@ -166,7 +167,7 @@ bool LLPreviewNotecard::handleKeyHere(KEY key, MASK mask)
// virtual
bool LLPreviewNotecard::canClose()
{
- if(mForceClose || mEditor->isPristine())
+ if(mForceClose || !mEditor || mEditor->isPristine())
{
return true;
}
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 2f8158f6f2..8c8734b52f 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -875,7 +875,7 @@ std::string LLTextureCache::getTextureFileName(const LLUUID& id)
//debug
bool LLTextureCache::isInCache(const LLUUID& id)
{
- LLMutexLock lock(&mHeaderMutex);
+ LLMutexLock lock(&mHeaderIDMapMutex);
id_map_t::const_iterator iter = mHeaderIDMap.find(id);
return (iter != mHeaderIDMap.end()) ;
@@ -1117,10 +1117,13 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
{
S32 idx = -1;
- id_map_t::iterator iter1 = mHeaderIDMap.find(id);
- if (iter1 != mHeaderIDMap.end())
{
- idx = iter1->second;
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ id_map_t::iterator iter1 = mHeaderIDMap.find(id);
+ if (iter1 != mHeaderIDMap.end())
+ {
+ idx = iter1->second;
+ }
}
if (idx < 0)
@@ -1148,10 +1151,19 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
// Erase entry from LRU regardless
mLRU.erase(curiter2);
// Look up entry and use it if it is valid
- id_map_t::iterator iter3 = mHeaderIDMap.find(oldid);
- if (iter3 != mHeaderIDMap.end() && iter3->second >= 0)
+
+ S32 found_idx = -1;
+ {
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ id_map_t::iterator iter3 = mHeaderIDMap.find(oldid);
+ if (iter3 != mHeaderIDMap.end() && iter3->second >= 0)
+ {
+ found_idx = iter3->second;
+ }
+ }
+ if (found_idx >= 0)
{
- idx = iter3->second;
+ idx = found_idx;
removeCachedTexture(oldid) ;//remove the existing cached texture to release the entry index.
break;
}
@@ -1287,7 +1299,10 @@ bool LLTextureCache::updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32
bool update_header = false ;
if(entry.mImageSize < 0) //is a brand-new entry
{
- mHeaderIDMap[entry.mID] = idx;
+ {
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ mHeaderIDMap[entry.mID] = idx;
+ }
mTexturesSizeMap[entry.mID] = new_body_size ;
mTexturesSizeTotal += new_body_size ;
@@ -1325,8 +1340,8 @@ bool LLTextureCache::updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32
U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
{
+ LLMutexLock lock(&mHeaderIDMapMutex);
U32 num_entries = mHeaderEntriesInfo.mEntries;
-
mHeaderIDMap.clear();
mTexturesSizeMap.clear();
mFreeList.clear();
@@ -1620,7 +1635,10 @@ void LLTextureCache::purgeAllTextures(bool purge_directories)
LLFile::rmdir(mTexturesDirName);
}
}
- mHeaderIDMap.clear();
+ {
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ mHeaderIDMap.clear();
+ }
mTexturesSizeMap.clear();
mTexturesSizeTotal = 0;
mFreeList.clear();
@@ -1667,6 +1685,7 @@ void LLTextureCache::purgeTexturesLazy(F32 time_limit_sec)
{
if (iter1->second > 0)
{
+ LLMutexLock lock(&mHeaderIDMapMutex);
id_map_t::iterator iter2 = mHeaderIDMap.find(iter1->first);
if (iter2 != mHeaderIDMap.end())
{
@@ -1708,8 +1727,13 @@ void LLTextureCache::purgeTexturesLazy(F32 time_limit_sec)
Entry entry = mPurgeEntryList.back().second;
mPurgeEntryList.pop_back();
// make sure record is still valid
- id_map_t::iterator iter_header = mHeaderIDMap.find(entry.mID);
- if (iter_header != mHeaderIDMap.end() && iter_header->second == idx)
+ bool remove_entry = false;
+ {
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ id_map_t::iterator iter_header = mHeaderIDMap.find(entry.mID);
+ remove_entry = (iter_header != mHeaderIDMap.end() && iter_header->second == idx);
+ }
+ if (remove_entry)
{
std::string tex_filename = getTextureFileName(entry.mID);
removeEntry(idx, entry, tex_filename);
@@ -1752,6 +1776,7 @@ void LLTextureCache::purgeTextures(bool validate)
{
if (iter1->second > 0)
{
+ LLMutexLock lock(&mHeaderIDMapMutex);
id_map_t::iterator iter2 = mHeaderIDMap.find(iter1->first);
if (iter2 != mHeaderIDMap.end())
{
@@ -2006,7 +2031,7 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
{
U32 offset;
{
- LLMutexLock lock(&mHeaderMutex);
+ LLMutexLock lock(&mHeaderIDMapMutex);
id_map_t::const_iterator iter = mHeaderIDMap.find(id);
if(iter == mHeaderIDMap.end())
{
@@ -2020,9 +2045,10 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
U8* data;
S32 head[4];
{
+ LL_PROFILE_ZONE_NAMED("Read fast cache");
LLMutexLock lock(&mFastCacheMutex);
- openFastCache();
+ openFastCache(); // only reopens if needed, lasts 10 seconds
mFastCachep->seek(APR_SET, offset);
@@ -2053,7 +2079,9 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
closeFastCache();
}
- LLPointer<LLImageRaw> raw = new LLImageRaw(data, head[0], head[1], head[2], true);
+
+ // directly construct image from new buffer.
+ LLPointer<LLImageRaw> raw = new LLImageRaw(data, head[0], head[1], head[2], true /*take ownership*/);
return raw;
}
@@ -2231,7 +2259,10 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id)
mTexturesSizeTotal -= mTexturesSizeMap[id] ;
mTexturesSizeMap.erase(id);
}
- mHeaderIDMap.erase(id);
+ {
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ mHeaderIDMap.erase(id);
+ }
// We are inside header's mutex so mHeaderAPRFilePoolp is safe to use,
// but getLocalAPRFilePool() is not safe, it might be in use by worker
LLAPRFile::remove(getTextureFileName(id), mHeaderAPRFilePoolp);
@@ -2262,7 +2293,10 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
entry.mImageSize = -1;
entry.mBodySize = 0;
- mHeaderIDMap.erase(entry.mID);
+ {
+ LLMutexLock lock(&mHeaderIDMapMutex);
+ mHeaderIDMap.erase(entry.mID);
+ }
mTexturesSizeMap.erase(entry.mID);
mFreeList.insert(idx);
}
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index faf722dc8f..a09bcc1572 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -148,7 +148,7 @@ public:
U32 getMaxEntries() { return sCacheMaxEntries; };
bool isInCache(const LLUUID& id) ;
bool isInLocal(const LLUUID& id) ; //not thread safe at the moment
-
+ LLMutex* getFastCacheMutex() { return &mFastCacheMutex; }
protected:
// Accessed by LLTextureCacheWorker
std::string getLocalFileName(const LLUUID& id);
@@ -194,6 +194,7 @@ private:
// Internal
LLMutex mWorkersMutex;
LLMutex mHeaderMutex;
+ LLMutex mHeaderIDMapMutex; // To avoid deadlocks, never lock mFastCacheMutex after mHeaderIDMapMutex.
LLMutex mListMutex;
LLMutex mFastCacheMutex;
LLAPRFile* mHeaderAPRFile;
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 35ac7919ac..9dfa9a0efd 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -576,9 +576,9 @@ void display(bool rebuild, F32 zoom_factor, int subfield, bool for_snapshot)
LLImageGL::updateStats(gFrameTimeSeconds);
static LLCachedControl<S32> avatar_name_tag_mode(gSavedSettings, "AvatarNameTagMode", 1);
- static LLCachedControl<bool> name_tag_show_group_titles(gSavedSettings, "NameTagShowGroupTitles", true);
+ static LLCachedControl<S32> name_tag_show_group_titles(gSavedSettings, "GroupTitlesTagMode", 2 /*all group tags*/);
LLVOAvatar::sRenderName = avatar_name_tag_mode;
- LLVOAvatar::sRenderGroupTitles = name_tag_show_group_titles && avatar_name_tag_mode > 0;
+ LLVOAvatar::sRenderGroupTitles = avatar_name_tag_mode > 0 ? name_tag_show_group_titles : 0;
gPipeline.mBackfaceCull = true;
gFrameCount++;
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index ab5235c3ad..82fc4c6d87 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -44,7 +44,6 @@
#include "llfloateravatarrendersettings.h"
#include "llfloateravatartextures.h"
#include "llfloaterbanduration.h"
-#include "llfloaterbigpreview.h"
#include "llfloaterbeacons.h"
#include "llfloaterbuildoptions.h"
#include "llfloaterbulkpermission.h"
@@ -120,7 +119,6 @@
#include "llfloaterpay.h"
#include "llfloaterperformance.h"
#include "llfloaterperms.h"
-#include "llfloaterpostprocess.h"
#include "llfloaterpreference.h"
#include "llfloaterpreferencesgraphicsadvanced.h"
#include "llfloaterpreferenceviewadvanced.h"
@@ -143,7 +141,6 @@
#include "llfloatersidepanelcontainer.h"
#include "llfloaterslapptest.h"
#include "llfloatersnapshot.h"
-#include "llfloatersounddevices.h"
#include "llfloaterspellchecksettings.h"
#include "llfloatertelehub.h"
#include "llfloatertestinspectors.h"
@@ -154,7 +151,6 @@
#include "llfloatertoybox.h"
#include "llfloatertranslationsettings.h"
#include "llfloateruipreview.h"
-#include "llfloatervoiceeffect.h"
#include "llfloaterwebcontent.h"
#include "llfloatervoicevolume.h"
#include "llfloaterwhitelistentry.h"
@@ -370,7 +366,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("emoji_picker", "floater_emoji_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEmojiPicker>);
LLFloaterReg::add("emoji_complete", "floater_emoji_complete.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEmojiComplete>);
- LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>);
LLFloaterReg::add("env_fixed_environmentent_water", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentWater>);
LLFloaterReg::add("env_fixed_environmentent_sky", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentSky>);
@@ -499,7 +494,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
LLFloaterReg::add("settings_color", "floater_settings_color.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsColor>);
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
- LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
LLFloaterReg::add("scene_load_stats", "floater_scene_load_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSceneLoadStats>);
@@ -512,8 +506,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("guidebook", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHowTo>);
LLFloaterReg::add("slapp_test", "floater_test_slapp.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSLappTest>);
- LLFloaterReg::add("big_preview", "floater_big_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBigPreview>);
-
LLFloaterUIPreviewUtil::registerFloater();
LLFloaterReg::add("upload_anim_bvh", "floater_animation_bvh_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBvhPreview>, "upload");
LLFloaterReg::add("upload_anim_anim", "floater_animation_anim_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAnimPreview>, "upload");
@@ -522,8 +514,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("upload_script", "floater_script_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptPreview>, "upload");
LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");
- LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>);
-
LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);
LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);
LLFloaterReg::add("window_size", "floater_window_size.xml", &LLFloaterReg::build<LLFloaterWindowSize>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 0032cba82c..dbcf4fbbf4 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -3017,6 +3017,40 @@ void handle_object_show_original()
show_item_original(object->getAttachmentItemID());
}
+void handle_object_set_favorite(const LLSD& userdata)
+{
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
+ if (!object)
+ {
+ return;
+ }
+ LLViewerObject *parent = (LLViewerObject*)object->getParent();
+ while (parent)
+ {
+ if(parent->isAvatar())
+ {
+ break;
+ }
+ object = parent;
+ parent = (LLViewerObject*)parent->getParent();
+ }
+ if (!object || object->isAvatar())
+ {
+ return;
+ }
+
+ LLUUID item_id = gInventory.getLinkedItemID(object->getAttachmentItemID());
+
+ std::string action = userdata.asString();
+ if (action == "Add")
+ {
+ set_favorite(item_id, true);
+ }
+ if (action == "Remove")
+ {
+ set_favorite(item_id, false);
+ }
+}
static void init_default_item_label(LLUICtrl* ctrl)
{
@@ -3073,6 +3107,41 @@ bool enable_object_touch(LLUICtrl* ctrl)
return new_value;
};
+bool enable_object_favorite(const LLSD& userdata)
+{
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
+ if (!object)
+ {
+ return false;
+ }
+ LLViewerObject* parent = (LLViewerObject*)object->getParent();
+ while (parent)
+ {
+ if (parent->isAvatar())
+ {
+ break;
+ }
+ object = parent;
+ parent = (LLViewerObject*)parent->getParent();
+ }
+ if (!object || object->isAvatar())
+ {
+ return false;
+ }
+
+ std::string action = userdata.asString();
+ LLUUID item_id = gInventory.getLinkedItemID(object->getAttachmentItemID());
+ if (action == "Add")
+ {
+ return !get_is_favorite(item_id);
+ }
+ if (action == "Remove")
+ {
+ return get_is_favorite(item_id);
+ }
+ return false;
+}
+
//void label_touch(std::string& label, void*)
//{
// LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode();
@@ -9557,17 +9626,6 @@ class LLWorldEnableEnvPreset : public view_listener_t
}
};
-
-/// Post-Process callbacks
-class LLWorldPostProcess : public view_listener_t
-{
- bool handleEvent(const LLSD& userdata)
- {
- LLFloaterReg::showInstance("env_post_process");
- return true;
- }
-};
-
class LLWorldCheckBanLines : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -9861,7 +9919,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLWorldEnableEnvSettings(), "World.EnableEnvSettings");
view_listener_t::addMenu(new LLWorldEnvPreset(), "World.EnvPreset");
view_listener_t::addMenu(new LLWorldEnableEnvPreset(), "World.EnableEnvPreset");
- view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess");
view_listener_t::addMenu(new LLWorldCheckBanLines() , "World.CheckBanLines");
view_listener_t::addMenu(new LLWorldShowBanLines() , "World.ShowBanLines");
@@ -10173,6 +10230,7 @@ void initialize_menus()
view_listener_t::addMenu(new LLObjectBuild(), "Object.Build");
commit.add("Object.Touch", boost::bind(&handle_object_touch));
commit.add("Object.ShowOriginal", boost::bind(&handle_object_show_original));
+ commit.add("Object.SetFavorite", boost::bind(&handle_object_set_favorite, _2));
commit.add("Object.SitOrStand", boost::bind(&handle_object_sit_or_stand));
commit.add("Object.Delete", boost::bind(&handle_object_delete));
view_listener_t::addMenu(new LLObjectAttachToAvatar(true), "Object.AttachToAvatar");
@@ -10201,6 +10259,7 @@ void initialize_menus()
enable.add("Object.EnableEditGLTFMaterial", boost::bind(&enable_object_edit_gltf_material));
enable.add("Object.EnableOpen", boost::bind(&enable_object_open));
enable.add("Object.EnableTouch", boost::bind(&enable_object_touch, _1));
+ enable.add("Object.EnableFavorites", boost::bind(&enable_object_favorite, _2));
enable.add("Object.EnableDelete", boost::bind(&enable_object_delete));
enable.add("Object.EnableWear", boost::bind(&object_is_wearable));
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 23915d01fa..0f23596c9a 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1898,13 +1898,11 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre
mRawDiscardLevel = INVALID_DISCARD_LEVEL;
mIsFetching = false;
mLastPacketTimer.reset();
- }
- else
- {
- mIsRawImageValid = true;
- addToCreateTexture();
+ return false;
}
+ mIsRawImageValid = true;
+
if (mBoostLevel == LLGLTexture::BOOST_ICON)
{
S32 expected_width = mKnownDrawWidth > 0 ? mKnownDrawWidth : DEFAULT_ICON_DIMENSIONS;
@@ -1916,7 +1914,11 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre
//
// BOOST_ICON gets scaling because profile icons can have a bunch of different formats, not just j2c
// Might need another pass to use discard for j2c and scaling for everything else.
- mRawImage = mRawImage->scaled(expected_width, expected_height);
+ LLPointer<LLImageRaw> scaled = mRawImage->scaled(expected_width, expected_height);
+ if (scaled.notNull())
+ {
+ mRawImage = scaled;
+ }
}
}
@@ -1931,10 +1933,16 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre
//
// Todo: probably needs to be remade to use discard, all thumbnails are supposed to be j2c,
// so no need to scale, should be posible to use discard to scale image down.
- mRawImage = mRawImage->scaled(expected_width, expected_height);
+ LLPointer<LLImageRaw> scaled = mRawImage->scaled(expected_width, expected_height);
+ if (scaled.notNull())
+ {
+ mRawImage = scaled;
+ }
}
}
+ addToCreateTexture();
+
return true;
}
else
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 11ca3098fd..96962bbeae 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1191,15 +1191,19 @@ F32 LLViewerTextureList::updateImagesLoadingFastCache(F32 max_time)
LLTimer timer;
image_list_t::iterator enditer = mFastCacheList.begin();
- for (image_list_t::iterator iter = mFastCacheList.begin();
- iter != mFastCacheList.end();)
{
- image_list_t::iterator curiter = iter++;
- enditer = iter;
- LLViewerFetchedTexture *imagep = *curiter;
- imagep->loadFromFastCache();
- if (timer.getElapsedTimeF32() > max_time)
- break;
+ // prelock fast cache mutex to avoid waiting multiple times.
+ LLMutexLock cache_lock(LLAppViewer::getTextureCache()->getFastCacheMutex());
+ for (image_list_t::iterator iter = mFastCacheList.begin();
+ iter != mFastCacheList.end();)
+ {
+ image_list_t::iterator curiter = iter++;
+ enditer = iter;
+ LLViewerFetchedTexture* imagep = *curiter;
+ imagep->loadFromFastCache();
+ if (timer.getElapsedTimeF32() > max_time)
+ break;
+ }
}
mFastCacheList.erase(mFastCacheList.begin(), enditer);
return timer.getElapsedTimeF32();
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 583fb25330..50af9756a3 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -96,6 +96,7 @@ LLViewerWearable::~LLViewerWearable()
// virtual
LLWearable::EImportResult LLViewerWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp )
{
+ LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
// suppress texlayerset updates while wearables are being imported. Layersets will be updated
// when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed.
LLOverrideBakedTextureUpdate stop_bakes(false);
diff --git a/indra/newview/llvlmanager.cpp b/indra/newview/llvlmanager.cpp
index c2bcd32921..f4c2c27cee 100644
--- a/indra/newview/llvlmanager.cpp
+++ b/indra/newview/llvlmanager.cpp
@@ -68,7 +68,11 @@ void LLVLManager::addLayerData(LLVLData *vl_datap, const S32Bytes mesg_size)
}
else
{
- LL_ERRS() << "Unknown layer type!" << (S32)vl_datap->mType << LL_ENDL;
+ // Corrupted message? New feature?
+ LL_WARNS() << "Unknown layer type!" << (S32)vl_datap->mType
+ << " for region " << vl_datap->mRegionp->getName() << LL_ENDL;
+ delete vl_datap; // addLayerData took ownership
+ return;
}
mPacketData.push_back(vl_datap);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index aa7ab6e9e7..efb09479e2 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -217,6 +217,13 @@ enum ERenderName
RENDER_NAME_FADE
};
+enum ERenderGroupTitle
+{
+ RENDER_GROUP_TITLE_NEVER,
+ RENDER_GROUP_TITLE_SELF,
+ RENDER_GROUP_TITLE_ALWAYS
+};
+
#define JELLYDOLLS_SHOULD_IMPOSTOR
//-----------------------------------------------------------------------------
@@ -607,7 +614,7 @@ const LLUUID LLVOAvatar::sStepSounds[LL_MCODE_END] =
};
S32 LLVOAvatar::sRenderName = RENDER_NAME_ALWAYS;
-bool LLVOAvatar::sRenderGroupTitles = true;
+S32 LLVOAvatar::sRenderGroupTitles = RENDER_GROUP_TITLE_ALWAYS;
S32 LLVOAvatar::sNumVisibleChatBubbles = 0;
bool LLVOAvatar::sDebugInvisible = false;
bool LLVOAvatar::sShowAttachmentPoints = false;
@@ -3552,9 +3559,10 @@ void LLVOAvatar::idleUpdateNameTagText(bool new_name)
addNameTagLine(line, name_tag_color, LLFontGL::NORMAL,
LLFontGL::getFontSansSerifSmall());
}
+ bool render_title = (sRenderGroupTitles == RENDER_GROUP_TITLE_ALWAYS) ||
+ (isSelf() && (sRenderGroupTitles == RENDER_GROUP_TITLE_SELF));
- if (sRenderGroupTitles
- && title && title->getString() && title->getString()[0] != '\0')
+ if (render_title && title && title->getString() && title->getString()[0] != '\0')
{
std::string title_str = title->getString();
LLStringFn::replace_ascii_controlchars(title_str,LL_UNKNOWN_CHAR);
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 1e563c4869..fc3a97a25d 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -354,7 +354,7 @@ public:
//--------------------------------------------------------------------
public:
static S32 sRenderName;
- static bool sRenderGroupTitles;
+ static S32 sRenderGroupTitles;
static const U32 NON_IMPOSTORS_MAX_SLIDER; /* Must equal the maximum allowed the RenderAvatarMaxNonImpostors
* slider in panel_preferences_graphics1.xml */
static U32 sMaxNonImpostors; // affected by control "RenderAvatarMaxNonImpostors"
@@ -1120,7 +1120,7 @@ private:
bool mNameFriend;
bool mNameCloud;
F32 mNameAlpha;
- bool mRenderGroupTitles;
+ S32 mRenderGroupTitles;
//--------------------------------------------------------------------
// Display the name (then optionally fade it out)
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h
index 68e7f3ee29..91bc699708 100644
--- a/indra/newview/llworldmap.h
+++ b/indra/newview/llworldmap.h
@@ -37,18 +37,6 @@
#include "llviewertexture.h"
#include "llgltexture.h"
-// map item types
-const U32 MAP_ITEM_TELEHUB = 0x01;
-const U32 MAP_ITEM_PG_EVENT = 0x02;
-const U32 MAP_ITEM_MATURE_EVENT = 0x03;
-//const U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW
-//const U32 MAP_ITEM_AGENT_COUNT = 0x05;
-const U32 MAP_ITEM_AGENT_LOCATIONS = 0x06;
-const U32 MAP_ITEM_LAND_FOR_SALE = 0x07;
-const U32 MAP_ITEM_CLASSIFIED = 0x08;
-const U32 MAP_ITEM_ADULT_EVENT = 0x09;
-const U32 MAP_ITEM_LAND_FOR_SALE_ADULT = 0x0a;
-
// Description of objects like hubs, events, land for sale, people and more (TBD).
// Note: we don't store a "type" in there so we need to store instances of this class in
// well known objects (i.e. list of objects which type is "well known").
diff --git a/indra/newview/skins/default/xui/da/floater_sound_devices.xml b/indra/newview/skins/default/xui/da/floater_sound_devices.xml
deleted file mode 100644
index cb4cbba570..0000000000
--- a/indra/newview/skins/default/xui/da/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Lyd enheder">
- <text name="voice_label">
- Stemme chat
- </text>
- <check_box label="Aktiveret" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_voice_effect.xml b/indra/newview/skins/default/xui/da/floater_voice_effect.xml
deleted file mode 100644
index 86ad251103..0000000000
--- a/indra/newview/skins/default/xui/da/floater_voice_effect.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Steder" name="voice_effects" title="STEMME MORPH">
- <string name="no_voice_effect">
- (Ingen stemme &quot;morph&quot;)
- </string>
- <string name="active_voice_effect">
- (Aktiv)
- </string>
- <string name="unsubscribed_voice_effect">
- (Ikke aktiveret)
- </string>
- <string name="new_voice_effect">
- (Ny!)
- </string>
- <text name="preview_text">
- For at se
- </text>
- <text name="status_text">
- Optag en prøve, klik derefter på en stemme for at høre hvordan det vil lyde.
- </text>
- <button label="Optag" name="record_btn" tool_tip="Optag en stemmeprøve."/>
- <button label="Stop" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Abonnér nu]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Optag en prøve med din stemme og klik på en effekt for at teste.">
- <scroll_list.columns label="Stemme navn" name="name"/>
- <scroll_list.columns label="Udløber" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/da/panel_voice_effect.xml b/indra/newview/skins/default/xui/da/panel_voice_effect.xml
deleted file mode 100644
index 50f561ec7f..0000000000
--- a/indra/newview/skins/default/xui/da/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Voice Morphing Off
- </string>
- <string name="preview_voice_effects">
- Se stemme &quot;morph&quot; ▶
- </string>
- <string name="get_voice_effects">
- Hente stemme &quot;morph&quot; ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Vælg en stemme &quot;morph&quot; for at ændre din stemme">
- <combo_box.item label="Stemme morph slukket" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_big_preview.xml b/indra/newview/skins/default/xui/de/floater_big_preview.xml
deleted file mode 100644
index c5ce56d1d9..0000000000
--- a/indra/newview/skins/default/xui/de/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="VORSCHAU"/>
diff --git a/indra/newview/skins/default/xui/de/floater_post_process.xml b/indra/newview/skins/default/xui/de/floater_post_process.xml
deleted file mode 100644
index a6ed8cc3df..0000000000
--- a/indra/newview/skins/default/xui/de/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="Post-Process Floater" title="POST-PROCESSING-EINSTELLUNGEN">
- <tab_container name="Post-Process Tabs">
- <panel label="Farbfilter" name="wmiColorFilterPanel">
- <check_box label="Ein" name="wmiColorFilterToggle" />
- <text name="wmiColorFilterBrightnessText">
- Helligkeit
- </text>
- <text name="wmiColorFilterSaturationText">
- Sättigung
- </text>
- <text name="wmiColorFilterContrastText">
- Kontrast
- </text>
- <text name="wmiColorFilterBaseText">
- Kontrast-Grundfarbe
- </text>
- <slider label="R" name="wmiColorFilterBaseR" />
- <slider label="G" name="wmiColorFilterBaseG" />
- <slider label="B" name="wmiColorFilterBaseB" />
- <slider label="I" name="wmiColorFilterBaseI" />
- </panel>
- <panel label="Nachtsicht" name="wmiNightVisionPanel">
- <check_box label="Ein" name="wmiNightVisionToggle" />
- <text name="wmiNightVisionBrightMultText">
- Lichtverstärkungsmultiplikator
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Rauschen-Größe
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Rauschen-Stärke
- </text>
- </panel>
- <panel label="Bloom" name="wmiBloomPanel">
- <check_box label="Ein" name="wmiBloomToggle" />
- <text name="wmiBloomExtractText">
- Luminanz-Extraktion
- </text>
- <text name="wmiBloomSizeText">
- Bloom-Größe
- </text>
- <text name="wmiBloomStrengthText">
- Bloom-Stärke
- </text>
- </panel>
- <panel label="Extras" name="Extras">
- <button label="Effekt laden" label_selected="Effekt laden" name="PPLoadEffect" />
- <button label="Effekt speichern" label_selected="Effekt speichern" name="PPSaveEffect" />
- <line_editor label="Effektname" name="PPEffectNameEditor" />
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml
deleted file mode 100644
index 22ccb2c1a2..0000000000
--- a/indra/newview/skins/default/xui/de/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="SOUNDGERÄTE">
- <text name="voice_label">
- Voice-Chat
- </text>
- <check_box label="Aktiviert" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
deleted file mode 100644
index 8d37950480..0000000000
--- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Orte" name="voice_effects" title="VOICE-MORPHING-VORSCHAU">
- <string name="no_voice_effect">
- (Kein Voice-Morphing)
- </string>
- <string name="active_voice_effect">
- (Aktiv)
- </string>
- <string name="unsubscribed_voice_effect">
- (nicht abonniert)
- </string>
- <string name="new_voice_effect">
- (Neu!)
- </string>
- <string name="effect_Arena">
- Arena
- </string>
- <string name="effect_Beast">
- Bestie
- </string>
- <string name="effect_Buff">
- Muskulös
- </string>
- <string name="effect_Buzz">
- Buzz
- </string>
- <string name="effect_Camille">
- Camille
- </string>
- <string name="effect_Creepy">
- Unheimlich
- </string>
- <string name="effect_CreepyBot">
- UnheimlicherBot
- </string>
- <string name="effect_Cyber">
- Cyber
- </string>
- <string name="effect_DeepBot">
- TieferBot
- </string>
- <string name="effect_Demon">
- Dämon
- </string>
- <string name="effect_Female Elf">
- Weibliche Elfe
- </string>
- <string name="effect_Flirty">
- Kokett
- </string>
- <string name="effect_Foxy">
- Attraktiv
- </string>
- <string name="effect_Halloween 2010 Bonus">
- Bonus_Halloween_2010
- </string>
- <string name="effect_Helium">
- Helium
- </string>
- <string name="effect_Husky">
- Rauchig
- </string>
- <string name="effect_Husky Whisper">
- Rauchiges Flüstern
- </string>
- <string name="effect_Intercom">
- Intercom
- </string>
- <string name="effect_Julia">
- Julia
- </string>
- <string name="effect_Lo Lilt">
- Leises Trällern
- </string>
- <string name="effect_Macho">
- Macho
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Model">
- Modell
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Alptraum
- </string>
- <string name="effect_PopBot">
- PopBot
- </string>
- <string name="effect_Rachel">
- Rachel
- </string>
- <string name="effect_Radio">
- Radio
- </string>
- <string name="effect_Robot">
- Roboter
- </string>
- <string name="effect_Roxanne">
- Roxanne
- </string>
- <string name="effect_Rumble">
- Rumpeln
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samantha
- </string>
- <string name="effect_Sexy">
- Sexy
- </string>
- <string name="effect_Shorty">
- Shorty
- </string>
- <string name="effect_Smaller">
- Kleiner
- </string>
- <string name="effect_Sneaky">
- Hinterhältig
- </string>
- <string name="effect_Stallion">
- Hengst
- </string>
- <string name="effect_Sultry">
- Feurig
- </string>
- <string name="effect_Thunder">
- Donner
- </string>
- <string name="effect_Vixen">
- Erotisch
- </string>
- <string name="effect_WhinyBot">
- JammernderBot
- </string>
- <text name="preview_text">
- Zur Vorschau
- </text>
- <text name="status_text">
- Stimme aufnehmen und auf einen Effekt klicken, um diesen auf Ihre Stimme anzuwenden.
- </text>
- <button label="Aufnehmen" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/>
- <button label="Stopp" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Jetzt abonnieren]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Nehmen Sie Ihre Stimme auf und klicken Sie dann auf einen Effekt, um diesen auszuprobieren.">
- <scroll_list.columns label="Bezeichnung" name="name"/>
- <scroll_list.columns label="Gültig bis" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/panel_voice_effect.xml b/indra/newview/skins/default/xui/de/panel_voice_effect.xml
deleted file mode 100644
index 533deb8597..0000000000
--- a/indra/newview/skins/default/xui/de/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Voice-Morphing Aus
- </string>
- <string name="preview_voice_effects">
- Voice-Morphing ausprobieren ▶
- </string>
- <string name="get_voice_effects">
- Voice-Morphing abonnieren ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Wählen Sie einen Voice-Morph-Effekt aus, um Ihre Stimme zu verändern.">
- <combo_box.item label="Voice-Morphing Aus" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/floater_big_preview.xml b/indra/newview/skins/default/xui/en/floater_big_preview.xml
deleted file mode 100644
index 362853d06f..0000000000
--- a/indra/newview/skins/default/xui/en/floater_big_preview.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- positioning="cascading"
- can_close="true"
- can_resize="true"
- can_minimize="false"
- help_topic="floater_big_preview"
- layout="topleft"
- name="floater_big_preview"
- save_rect="true"
- single_instance="true"
- reuse_instance="true"
- title="PREVIEW"
- height="465"
- width="770">
- <panel
- height="450"
- width="750"
- visible="true"
- name="big_preview_placeholder"
- top="5"
- follows="all"
- left="10">
- </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml
deleted file mode 100644
index 37339f79c8..0000000000
--- a/indra/newview/skins/default/xui/en/floater_post_process.xml
+++ /dev/null
@@ -1,426 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- legacy_header_height="18"
- height="400"
- layout="topleft"
- name="Post-Process Floater"
- help_topic="post_process_floater"
- title="POST-PROCESS SETTINGS"
- width="400">
- <tab_container
- follows="left|top"
- height="400"
- layout="topleft"
- left="0"
- name="Post-Process Tabs"
- tab_position="top"
- top="0"
- width="400">
- <panel
- border="true"
- follows="left|top|right|bottom"
- height="400"
- label="Color Filter"
- layout="topleft"
- left="1"
- mouse_opaque="false"
- help_topic="post_process_color_filter_tab"
- name="wmiColorFilterPanel"
- top="0"
- width="398">
- <check_box
- control_name="wmiColorFilterToggle"
- height="16"
- label="Enable"
- layout="topleft"
- left="14"
- name="wmiColorFilterToggle"
- top="4"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiColorFilterBrightnessText"
- top_pad="4"
- width="355">
- Brightness
- </text>
- <slider
- control_name="wmiColorFilterBrightness"
- decimal_digits="2"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.0"
- layout="topleft"
- left_delta="4"
- max_val="4"
- name="wmiColorFilterBrightness"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiColorFilterSaturationText"
- top_pad="4"
- width="355">
- Saturation
- </text>
- <slider
- control_name="wmiColorFilterSaturation"
- decimal_digits="2"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.0"
- layout="topleft"
- left_delta="4"
- max_val="2"
- min_val="-1"
- name="wmiColorFilterSaturation"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiColorFilterContrastText"
- top_pad="4"
- width="355">
- Contrast
- </text>
- <slider
- control_name="wmiColorFilterContrast"
- decimal_digits="2"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.0"
- layout="topleft"
- left_delta="4"
- max_val="4"
- name="wmiColorFilterContrast"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiColorFilterBaseText"
- top_pad="4"
- width="355">
- Contrast Base Color
- </text>
- <slider
- control_name="wmiColorFilterBaseR"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.0"
- label="R"
- layout="topleft"
- left_delta="4"
- name="wmiColorFilterBaseR"
- top_pad="20"
- width="200" />
- <slider
- control_name="wmiColorFilterBaseG"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.0"
- label="G"
- layout="topleft"
- left_delta="0"
- name="wmiColorFilterBaseG"
- top_pad="10"
- width="200" />
- <slider
- control_name="wmiColorFilterBaseB"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.0"
- label="B"
- layout="topleft"
- left_delta="0"
- name="wmiColorFilterBaseB"
- top_pad="10"
- width="200" />
- <slider
- control_name="wmiColorFilterBaseI"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="0.5"
- label="I"
- layout="topleft"
- left_delta="0"
- name="wmiColorFilterBaseI"
- top_pad="10"
- width="200" />
- </panel>
- <panel
- border="true"
- follows="left|top|right|bottom"
- height="400"
- label="Night Vision"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- help_topic="post_process_night_vision_tab"
- name="wmiNightVisionPanel"
- top_delta="-236"
- width="398">
- <check_box
- control_name="wmiNightVisionToggle"
- height="16"
- label="Enable"
- layout="topleft"
- left="14"
- name="wmiNightVisionToggle"
- top="4"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiNightVisionBrightMultText"
- top_pad="5"
- width="355">
- Light Amplification Multiple
- </text>
- <slider
- control_name="wmiNightVisionBrightMult"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="3.0"
- layout="topleft"
- left_delta="4"
- max_val="10"
- min_val="1"
- name="wmiNightVisionBrightMult"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiNightVisionNoiseSizeText"
- top_pad="4"
- width="355">
- Noise Size
- </text>
- <slider
- control_name="wmiNightVisionNoiseSize"
- follows="left"
- height="10"
- initial_value="1"
- layout="topleft"
- left_delta="4"
- max_val="100"
- min_val="1"
- name="wmiNightVisionNoiseSize"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiNightVisionNoiseStrengthText"
- top_pad="4"
- width="355">
- Noise Strength
- </text>
- <slider
- control_name="wmiNightVisionNoiseStrength"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="0.3"
- layout="topleft"
- left_delta="4"
- name="wmiNightVisionNoiseStrength"
- top_pad="20"
- width="200" />
- </panel>
- <panel
- border="true"
- follows="left|top|right|bottom"
- height="400"
- label="Bloom"
- layout="topleft"
- left_delta="0"
- help_topic="post_process_bloom_tab"
- name="wmiBloomPanel"
- top_delta="-236"
- width="398">
- <check_box
- control_name="wmiBloomToggle"
- height="16"
- label="Enable"
- layout="topleft"
- left="14"
- name="wmiBloomToggle"
- top="4"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiBloomExtractText"
- top_pad="5"
- width="355">
- Luminosity Extraction
- </text>
- <slider
- control_name="wmiBloomExtract"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="0.9"
- layout="topleft"
- left_delta="4"
- name="wmiBloomExtract"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiBloomSizeText"
- top_pad="4"
- width="355">
- Bloom Size
- </text>
- <slider
- control_name="wmiBloomSize"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="3.0"
- layout="topleft"
- left_delta="4"
- max_val="20"
- name="wmiBloomSize"
- top_pad="20"
- width="200" />
- <text
- type="string"
- length="1"
- follows="left|top|right"
- font="SansSerif"
- height="16"
- layout="topleft"
- left_delta="-4"
- name="wmiBloomStrengthText"
- top_pad="4"
- width="355">
- Bloom Strength
- </text>
- <slider
- control_name="wmiBloomStrength"
- follows="left"
- height="10"
- increment="0.01"
- initial_value="1.2"
- layout="topleft"
- left_delta="4"
- max_val="10"
- name="wmiBloomStrength"
- top_pad="20"
- width="200" />
- </panel>
- <panel
- border="true"
- follows="left|top|right|bottom"
- height="400"
- label="Extras"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- help_topic="post_process_extras_tab"
- name="Extras"
- top_delta="-236"
- width="398">
- <button
- height="20"
- label="LoadEffect"
- label_selected="LoadEffect"
- layout="topleft"
- left="15"
- name="PPLoadEffect"
- top="13"
- width="100" />
- <button
- height="20"
- label="SaveEffect"
- label_selected="SaveEffect"
- layout="topleft"
- left_delta="0"
- name="PPSaveEffect"
- top_pad="7"
- width="100" />
- <combo_box
- height="18"
- layout="topleft"
- left_delta="120"
- name="PPEffectsCombo"
- top="15"
- width="150" />
- <line_editor
- border_style="line"
- border_thickness="1"
- follows="left|right|bottom"
- font="SansSerif"
- height="20"
- label="Effect Name"
- layout="topleft"
- left_delta="0"
- max_length_bytes="40"
- name="PPEffectNameEditor"
- tab_group="1"
- top_pad="22"
- width="150" />
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
deleted file mode 100644
index dec0e9b6c6..0000000000
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- legacy_header_height="18"
- can_minimize="true"
- can_resize="false"
- can_close="false"
- chrome="true"
- save_dock_state="true"
- save_visibility="true"
- save_rect="true"
- single_instance="true"
- bevel_style="in"
- height="164"
- layout="topleft"
- name="floater_sound_devices"
- title="SOUND DEVICES"
- width="490">
- <panel
- layout="topleft"
- follows="all"
- filename="panel_sound_devices.xml"
- name="device_settings_panel"
- width="400"
- left="10"
- top="26"
- class="panel_voice_device_settings"/>
- <text
- name="voice_label"
- top="136"
- left="12"
- height="14"
- width="80"
- layout="topleft"
- >Voice Chat</text>
- <check_box
- layout="topleft"
- control_name="EnableVoiceChat"
- follows="bottom|left"
- top="138"
- left="80"
- name="enable_voice"
- width="100"
- height="14"
- label="Enabled"
- />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
deleted file mode 100644
index d037bdb813..0000000000
--- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- legacy_header_height="27"
- can_resize="true"
- height="500"
- name="voice_effects"
- help_topic="voice_effects"
- title="VOICE MORPHING PREVIEW"
- background_visible="true"
- label="Places"
- layout="topleft"
- min_height="360"
- min_width="200"
- save_rect="true"
- width="300">
- <string name="no_voice_effect">
- (No Voice Morph)
- </string>
- <string name="active_voice_effect">
- (Active)
- </string>
- <string name="unsubscribed_voice_effect">
- (Unsubscribed)
- </string>
- <string name="new_voice_effect">
- (New!)
- </string>
-
- <!-- effect names begin -->
- <string name="effect_Arena">Arena</string>
- <string name="effect_Beast">Beast</string>
- <string name="effect_Buff">Buff</string>
- <string name="effect_Buzz">Buzz</string>
- <string name="effect_Camille">Camille</string>
- <string name="effect_Creepy">Creepy</string>
- <string name="effect_CreepyBot">CreepyBot</string>
- <string name="effect_Cyber">Cyber</string>
- <string name="effect_DeepBot">DeepBot</string>
- <string name="effect_Demon">Demon</string>
- <string name="effect_Female Elf">Female Elf</string>
- <string name="effect_Flirty">Flirty</string>
- <string name="effect_Foxy">Foxy</string>
- <string name="effect_Halloween 2010 Bonus">Halloween_2010_Bonus</string>
- <string name="effect_Helium">Helium</string>
- <string name="effect_Husky">Husky</string>
- <string name="effect_Husky Whisper">Husky Whisper</string>
- <string name="effect_Intercom">Intercom</string>
- <string name="effect_Julia">Julia</string>
- <string name="effect_Lo Lilt">Lo Lilt</string>
- <string name="effect_Macho">Macho</string>
- <string name="effect_Micro">Micro</string>
- <string name="effect_Mini">Mini</string>
- <string name="effect_Model">Model</string>
- <string name="effect_Nano">Nano</string>
- <string name="effect_Nightmare">Nightmare</string>
- <string name="effect_PopBot">PopBot</string>
- <string name="effect_Rachel">Rachel</string>
- <string name="effect_Radio">Radio</string>
- <string name="effect_Robot">Robot</string>
- <string name="effect_Roxanne">Roxanne</string>
- <string name="effect_Rumble">Rumble</string>
- <string name="effect_Sabrina">Sabrina</string>
- <string name="effect_Samantha">Samantha</string>
- <string name="effect_Sexy">Sexy</string>
- <string name="effect_Shorty">Shorty</string>
- <string name="effect_Smaller">Smaller</string>
- <string name="effect_Sneaky">Sneaky</string>
- <string name="effect_Stallion">Stallion</string>
- <string name="effect_Sultry">Sultry</string>
- <string name="effect_Thunder">Thunder</string>
- <string name="effect_Vixen">Vixen</string>
- <string name="effect_WhinyBot">WhinyBot</string>
- <!-- effect names end -->
-
- <text
- height="16"
- word_wrap="true"
- use_ellipses="true"
- type="string"
- follows="left|top|right"
- layout="topleft"
- font="SansSerifBold"
- color="White"
- left="10"
- name="preview_text"
- right="-10"
- top="27">To Preview
- </text>
- <text
- height="23"
- word_wrap="true"
- use_ellipses="true"
- type="string"
- follows="left|top|right"
- layout="topleft"
- left="10"
- name="status_text"
- right="-5"
- top_pad="0">
-Record a sample, then click on a voice to hear how it will sound.
- </text>
- <button
- follows="left|top"
- height="23"
- label="Record"
- layout="topleft"
- left="10"
- name="record_btn"
- tool_tip="Record a sample of your voice."
- top_pad="5"
- width="100">
- <button.commit_callback
- function="VoiceEffect.Record" />
- </button>
- <button
- follows="left|top"
- height="23"
- label="Stop"
- layout="topleft"
- left_delta="0"
- name="record_stop_btn"
- top_delta="0"
- width="100">
- <button.commit_callback
- function="VoiceEffect.Stop" />
- </button>
- <text
- height="23"
- halign="right"
- use_ellipses="true"
- type="string"
- follows="left|top|right"
- layout="topleft"
- left_pad="10"
- top_delta="10"
- name="voice_morphing_link"
- right="-10">
- [[URL] Subscribe Now]
- </text>
- <scroll_list
- bottom="-10"
- draw_heading="true"
- follows="all"
- layout="topleft"
- left="10"
- multi_select="false"
- name="voice_effect_list"
- right="-10"
- tool_tip="Record a sample of your voice, then click an effect to preview."
- top="95">
- <scroll_list.columns
- label="Voice Name"
- name="name"
- relative_width="0.60" />
- <scroll_list.columns
- dynamic_width="true"
- label="Expires"
- name="expires"
- relative_width="0.30" />
- </scroll_list>
-
-</floater>
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
index d978619355..c9adf46ad7 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -48,6 +48,28 @@
<menu_item_call.on_click
function="Object.ShowOriginal" />
</menu_item_call>
+ <menu_item_call
+ label="Add to favorites"
+ layout="topleft"
+ name="Add to favorites">
+ <menu_item_call.on_click
+ function="Object.SetFavorite"
+ parameter="Add" />
+ <menu_item_call.on_visible
+ function="Object.EnableFavorites"
+ parameter="Add"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Remove from favorites"
+ layout="topleft"
+ name="Remove from favorites">
+ <menu_item_call.on_click
+ function="Object.SetFavorite"
+ parameter="Remove" />
+ <menu_item_call.on_visible
+ function="Object.EnableFavorites"
+ parameter="Remove" />
+ </menu_item_call>
<menu_item_separator
layout="topleft" />
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
index 97f53d3a17..f85f897700 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
@@ -53,11 +53,7 @@
function="Inventory.GearDefault.Visible"
parameter="multi_folder_view" />
</menu_item_check>
- <menu_item_separator>
- <menu_item_separator.on_visible
- function="Inventory.GearDefault.Visible"
- parameter="single_folder_view" />
- </menu_item_separator>
+ <menu_item_separator/>
<menu_item_check
label="List view"
layout="topleft"
@@ -100,4 +96,46 @@
function="Inventory.GearDefault.Visible"
parameter="single_folder_view" />
</menu_item_check>
+ <menu_item_check
+ label="Recent tab"
+ layout="topleft"
+ name="recent_tab">
+ <on_click
+ function="Inventory.GearDefault.Custom.Action"
+ parameter="toggle_recent_tab" />
+ <on_check
+ function="Inventory.GearDefault.Check"
+ parameter="recent_tab" />
+ <on_visible
+ function="Inventory.GearDefault.Visible"
+ parameter="multi_folder_view" />
+ </menu_item_check>
+ <menu_item_check
+ label="Worn tab"
+ layout="topleft"
+ name="worn_tab">
+ <on_click
+ function="Inventory.GearDefault.Custom.Action"
+ parameter="toggle_worn_tab" />
+ <on_check
+ function="Inventory.GearDefault.Check"
+ parameter="worn_tab" />
+ <on_visible
+ function="Inventory.GearDefault.Visible"
+ parameter="multi_folder_view" />
+ </menu_item_check>
+ <menu_item_check
+ label="Favorites tab"
+ layout="topleft"
+ name="favorites_tab">
+ <on_click
+ function="Inventory.GearDefault.Custom.Action"
+ parameter="toggle_favorites_tab" />
+ <on_check
+ function="Inventory.GearDefault.Check"
+ parameter="favorites_tab" />
+ <on_visible
+ function="Inventory.GearDefault.Visible"
+ parameter="multi_folder_view" />
+ </menu_item_check>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index ba43e80eda..ffe4bcebd5 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -960,7 +960,8 @@
</menu_item_check>
<menu_item_check
label="Midday (Legacy)"
- name="legacy noon">
+ name="legacy noon"
+ shortcut="control|shift|T">
<menu_item_check.on_click
function="World.EnvSettings"
parameter="legacy noon" />
@@ -992,7 +993,8 @@
</menu_item_check>
<menu_item_check
label="Use Shared Environment"
- name="Use Shared Environment">
+ name="Use Shared Environment"
+ shortcut="control|shift|X">
<menu_item_check.on_click
function="World.EnvSettings"
parameter="region" />
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index b9ab457f3b..bc69242651 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -9711,6 +9711,22 @@ Are you sure you want to leave this call?
<notification
icon="alertmodal.tga"
+ name="ConfirmLeaveAdhoc"
+ type="alertmodal">
+Are you sure you want to leave this conference chat?
+ <tag>confirm</tag>
+ <tag>voice</tag>
+ <usetemplate
+ ignoretext="Confirm before I leave conference chat"
+ name="okcancelignore"
+ notext="No"
+ yestext="Yes">
+ <unique/>
+ </usetemplate>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="ConfirmMuteAll"
type="alert">
You have selected to mute all participants in a group call.
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index aa641a35f7..08b3ef69b6 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -295,16 +295,16 @@
tool_tip="Show username, like bobsmith123"
top_delta="0" />
<check_box
- control_name="NameTagShowGroupTitles"
- enabled_control="AvatarNameTagMode"
+ control_name="UseDisplayNames"
+ follows="top|left"
height="16"
- label="Group titles"
+ label="Display names"
layout="topleft"
left="35"
- width="100"
- name="show_all_title_checkbox1"
- tool_tip="Show group titles, like Officer or Member"
- top_pad="3" />
+ name="display_names_check"
+ width="100"
+ tool_tip="Check to use display names in chat, IM, name tags, etc."
+ top_pad="3"/>
<check_box
control_name="NameTagShowFriends"
enabled_control="AvatarNameTagMode"
@@ -313,19 +313,29 @@
layout="topleft"
left_pad="50"
name="show_friends"
- tool_tip="Highlight the name tags of your friends"/>
- <check_box
- control_name="UseDisplayNames"
- follows="top|left"
- height="16"
- label="View Display Names"
- layout="topleft"
- left="35"
- name="display_names_check"
- width="237"
- tool_tip="Check to use display names in chat, IM, name tags, etc."
- top_pad="3"/>
-
+ tool_tip="Highlight the name tags of your friends"/>
+ <combo_box
+ height="23"
+ layout="topleft"
+ control_name="GroupTitlesTagMode"
+ enabled_control="AvatarNameTagMode"
+ left="39"
+ top_pad="3"
+ name="group_title"
+ width="130">
+ <combo_box.item
+ label="No group tags"
+ name="no_tags"
+ value="0" />
+ <combo_box.item
+ label="Only my group tag"
+ name="my_tag"
+ value="1" />
+ <combo_box.item
+ label="All group tags"
+ name="all_tags"
+ value="2" />
+ </combo_box>
<text
type="string"
length="1"
@@ -334,7 +344,7 @@
layout="topleft"
left="30"
name="inworld_typing_rg_label"
- top_pad="1"
+ top_pad="4"
width="400">
Pressing letter keys:
</text>
diff --git a/indra/newview/skins/default/xui/en/panel_voice_effect.xml b/indra/newview/skins/default/xui/en/panel_voice_effect.xml
deleted file mode 100644
index 42cd510efd..0000000000
--- a/indra/newview/skins/default/xui/en/panel_voice_effect.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel
- follows="all"
- height="26"
- layout="topleft"
- name="panel_voice_effect"
- width="200">
- <string name="no_voice_effect">
- Voice Morphing Off
- </string>
- <string name="preview_voice_effects">
- Preview Voice Morphing ▶
- </string>
- <string name="get_voice_effects">
- Get Voice Morphing ▶
- </string>
- <combo_box
- enabled="false"
- follows="left|top|right"
- height="23"
- name="voice_effect"
- tool_tip="Select a Voice Morph to change your voice"
- top_pad="0"
- width="200">
- <combo_box.item
- label="Voice Morphing Off"
- name="no_voice_effect"
- top_pad="0"
- value="0" />
- <combo_box.commit_callback
- function="Voice.CommitVoiceEffect" />
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_big_preview.xml b/indra/newview/skins/default/xui/es/floater_big_preview.xml
deleted file mode 100644
index b112243d7a..0000000000
--- a/indra/newview/skins/default/xui/es/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="VISTA PREVIA"/>
diff --git a/indra/newview/skins/default/xui/es/floater_post_process.xml b/indra/newview/skins/default/xui/es/floater_post_process.xml
deleted file mode 100644
index 5c62ccde36..0000000000
--- a/indra/newview/skins/default/xui/es/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="CONFIGURACIÓN DEL PROCESAMIENTO">
- <tab_container name="Post-Process Tabs">
- <panel label="Color del filtro" name="wmiColorFilterPanel">
- <check_box label="Activar" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- Brillo
- </text>
- <text name="wmiColorFilterSaturationText">
- Saturación
- </text>
- <text name="wmiColorFilterContrastText">
- Contraste
- </text>
- <text name="wmiColorFilterBaseText">
- Color base del contraste
- </text>
- <slider label="R" name="wmiColorFilterBaseR"/>
- <slider label="V" name="wmiColorFilterBaseG"/>
- <slider label="A" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="Visión nocturna" name="wmiNightVisionPanel">
- <check_box label="Activar" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- Amplificación de luz
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Cantidad de ruido
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Intensidad del ruido
- </text>
- </panel>
- <panel label="Bloom" name="wmiBloomPanel">
- <check_box label="Activar" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- Extracción de la luminosidad
- </text>
- <text name="wmiBloomSizeText">
- Bloom: cantidad
- </text>
- <text name="wmiBloomStrengthText">
- Bloom: intensidad
- </text>
- </panel>
- <panel label="Extras" name="Extras">
- <button label="Cargar efecto" label_selected="Cargar efecto" name="PPLoadEffect"/>
- <button label="Guardar efecto" label_selected="Guardar efecto" name="PPSaveEffect"/>
- <line_editor label="Nombre del efecto" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
deleted file mode 100644
index 0291f9e796..0000000000
--- a/indra/newview/skins/default/xui/es/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="DISPOSITIVOS DE SONIDO">
- <text name="voice_label">
- Chat de voz
- </text>
- <check_box label="Activados" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
deleted file mode 100644
index 02ebe80ff7..0000000000
--- a/indra/newview/skins/default/xui/es/floater_voice_effect.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="PROBAR TRANSFORMACIÓN DE VOZ">
- <string name="no_voice_effect">
- (Sin transformación de voz)
- </string>
- <string name="active_voice_effect">
- (Activo)
- </string>
- <string name="unsubscribed_voice_effect">
- (Suscripción cancelada)
- </string>
- <string name="new_voice_effect">
- (¡Nuevo!)
- </string>
- <string name="effect_Arena">
- Campo
- </string>
- <string name="effect_Beast">
- Bestia
- </string>
- <string name="effect_Buff">
- Musculoso
- </string>
- <string name="effect_Buzz">
- Murmullo
- </string>
- <string name="effect_Camille">
- Camila
- </string>
- <string name="effect_Creepy">
- Aterrador
- </string>
- <string name="effect_CreepyBot">
- Robot aterrador
- </string>
- <string name="effect_Cyber">
- Cyber
- </string>
- <string name="effect_DeepBot">
- Robot profundo
- </string>
- <string name="effect_Demon">
- Diablo
- </string>
- <string name="effect_Flirty">
- Coqueta
- </string>
- <string name="effect_Foxy">
- Astuto
- </string>
- <string name="effect_Halloween_2010_Bonus">
- Halloween_2010_Bonus
- </string>
- <string name="effect_Helium">
- Helio
- </string>
- <string name="effect_Husky">
- Corpulento
- </string>
- <string name="effect_Intercom">
- Intercom
- </string>
- <string name="effect_Macho">
- Macho
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Pesadilla
- </string>
- <string name="effect_PopBot">
- Robot pop
- </string>
- <string name="effect_Rachel">
- Raquel
- </string>
- <string name="effect_Radio">
- Radio
- </string>
- <string name="effect_Robot">
- Robot
- </string>
- <string name="effect_Roxanne">
- Roxana
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samanta
- </string>
- <string name="effect_Sexy">
- Sexy
- </string>
- <string name="effect_Shorty">
- Bajito
- </string>
- <string name="effect_Sneaky">
- Furtivo
- </string>
- <string name="effect_Stallion">
- Mujeriego
- </string>
- <string name="effect_Sultry">
- Sensual
- </string>
- <string name="effect_Thunder">
- Trueno
- </string>
- <string name="effect_Vixen">
- Tigresa
- </string>
- <string name="effect_WhinyBot">
- Robot llorica
- </string>
- <text name="preview_text">
- Para probarla
- </text>
- <text name="status_text">
- Graba una muestra y pulsa en una voz para escuchar cómo suena.
- </text>
- <button label="Grabar" name="record_btn" tool_tip="Graba una muestra de tu voz."/>
- <button label="Parar" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Suscríbete ahora]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Graba una muestra de tu voz y pulsa en un efecto para ver cómo suena.">
- <scroll_list.columns label="Nombre de la voz" name="name"/>
- <scroll_list.columns label="Caduca" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/panel_voice_effect.xml b/indra/newview/skins/default/xui/es/panel_voice_effect.xml
deleted file mode 100644
index 94a0428941..0000000000
--- a/indra/newview/skins/default/xui/es/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Transformación de voz desactivada
- </string>
- <string name="preview_voice_effects">
- Probar transformación de voz ▶
- </string>
- <string name="get_voice_effects">
- Obtener transformación de voz ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Selecciona una transformación de voz para cambiar tu voz">
- <combo_box.item label="Transformación de voz desactivada" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_big_preview.xml b/indra/newview/skins/default/xui/fr/floater_big_preview.xml
deleted file mode 100644
index 0c09a4c188..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="APERÇU"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_post_process.xml b/indra/newview/skins/default/xui/fr/floater_post_process.xml
deleted file mode 100644
index a22c7512e5..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_post_process.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="Post-Process Floater" title="PARAMÈTRES POST-TRAITEMENT">
- <tab_container name="Post-Process Tabs">
- <panel label="Filtre couleur" name="wmiColorFilterPanel">
- <check_box label="Activer" name="wmiColorFilterToggle" />
- <text name="wmiColorFilterBrightnessText">
- Luminosité
- </text>
- <text name="wmiColorFilterSaturationText">
- Saturation
- </text>
- <text name="wmiColorFilterContrastText">
- Contraste
- </text>
- <text name="wmiColorFilterBaseText">
- Couleur de base du contraste
- </text>
- <slider label="R" name="wmiColorFilterBaseR" />
- <slider label="V" name="wmiColorFilterBaseG" />
- <slider label="B" name="wmiColorFilterBaseB" />
- <slider label="I" name="wmiColorFilterBaseI" />
- </panel>
- <panel label="Vision de nuit" name="wmiNightVisionPanel">
- <check_box label="Activer" name="wmiNightVisionToggle" />
- <text name="wmiNightVisionBrightMultText">
- Multiple d&apos;amplificateur de lumière
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Taille du bruit
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Force du bruit
- </text>
- </panel>
- <panel label="Éclat" name="wmiBloomPanel">
- <check_box label="Activer" name="wmiBloomToggle" />
- <text name="wmiBloomExtractText">
- Extraction de la luminosité
- </text>
- <text name="wmiBloomSizeText">
- Taille de l&apos;éclat
- </text>
- <text name="wmiBloomStrengthText">
- Force de l&apos;éclat
- </text>
- </panel>
- <panel label="Extras" name="Extras">
- <button label="Charger effet" label_selected="Charger effet" name="PPLoadEffect" />
- <button label="Enregistrer effet" label_selected="Enregistrer effet"
- name="PPSaveEffect" />
- <line_editor label="Nom de l&apos;effet" name="PPEffectNameEditor" />
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
deleted file mode 100644
index 080ade9dd4..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="PERIPHERIQUES AUDIO">
- <text name="voice_label">
- Chat vocal
- </text>
- <check_box label="Activé" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
deleted file mode 100644
index f9a76d127e..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Endroits" name="voice_effects" title="APERÇU DES EFFETS DE VOIX">
- <string name="no_voice_effect">
- (Aucun effet de voix)
- </string>
- <string name="active_voice_effect">
- (Actif)
- </string>
- <string name="unsubscribed_voice_effect">
- (Pas d&apos;abonnement)
- </string>
- <string name="new_voice_effect">
- (Nouveau !)
- </string>
- <string name="effect_Arena">
- Stade
- </string>
- <string name="effect_Beast">
- Brute
- </string>
- <string name="effect_Buff">
- Nasal
- </string>
- <string name="effect_Buzz">
- Friture
- </string>
- <string name="effect_Camille">
- Camille
- </string>
- <string name="effect_Creepy">
- Effrayant
- </string>
- <string name="effect_CreepyBot">
- BotEffrayant
- </string>
- <string name="effect_Cyber">
- Cyber
- </string>
- <string name="effect_DeepBot">
- BotGrave
- </string>
- <string name="effect_Demon">
- Démon
- </string>
- <string name="effect_Female Elf">
- Femme elfe
- </string>
- <string name="effect_Flirty">
- Flirt
- </string>
- <string name="effect_Foxy">
- Séduction
- </string>
- <string name="effect_Halloween 2010 Bonus">
- Halloween_2010_Bonus
- </string>
- <string name="effect_Helium">
- Hélium
- </string>
- <string name="effect_Husky">
- Rauque
- </string>
- <string name="effect_Husky Whisper">
- Murmure rauque
- </string>
- <string name="effect_Intercom">
- Interphone
- </string>
- <string name="effect_Julia">
- Julia
- </string>
- <string name="effect_Lo Lilt">
- Mélodieux
- </string>
- <string name="effect_Macho">
- Macho
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Model">
- Modèle
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Cauchemar
- </string>
- <string name="effect_PopBot">
- BotPop
- </string>
- <string name="effect_Rachel">
- Rachel
- </string>
- <string name="effect_Radio">
- Radio
- </string>
- <string name="effect_Robot">
- Robot
- </string>
- <string name="effect_Roxanne">
- Roxanne
- </string>
- <string name="effect_Rumble">
- Grondement
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samantha
- </string>
- <string name="effect_Sexy">
- Sexy
- </string>
- <string name="effect_Shorty">
- Petite voix
- </string>
- <string name="effect_Smaller">
- Plus faible
- </string>
- <string name="effect_Sneaky">
- Sournois
- </string>
- <string name="effect_Stallion">
- Étalon
- </string>
- <string name="effect_Sultry">
- Sensuel
- </string>
- <string name="effect_Thunder">
- Tonnerre
- </string>
- <string name="effect_Vixen">
- Mégère
- </string>
- <string name="effect_WhinyBot">
- BotPleurnichard
- </string>
- <text name="preview_text">
- Aperçu
- </text>
- <text name="status_text">
- Enregistrez un extrait et cliquez sur un effet pour obtenir un aperçu.
- </text>
- <button label="Enregistrer" name="record_btn" tool_tip="Enregistrez un extrait de votre voix."/>
- <button label="Arrêter" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] S&apos;abonner]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Enregistrez un extrait de votre voix, puis cliquez sur un effet pour obtenir un aperçu.">
- <scroll_list.columns label="Nom de l&apos;effet" name="name"/>
- <scroll_list.columns label="Date d&apos;expiration" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml b/indra/newview/skins/default/xui/fr/panel_voice_effect.xml
deleted file mode 100644
index a134854706..0000000000
--- a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Effet de voix désactivé
- </string>
- <string name="preview_voice_effects">
- Aperçu des effets de voix ▶
- </string>
- <string name="get_voice_effects">
- Obtenir un effet de voix ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Sélectionner un effet pour modifier le son de votre voix">
- <combo_box.item label="Effet de voix désactivé" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/floater_big_preview.xml b/indra/newview/skins/default/xui/it/floater_big_preview.xml
deleted file mode 100644
index 7bc50a6d39..0000000000
--- a/indra/newview/skins/default/xui/it/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="ANTEPRIMA"/>
diff --git a/indra/newview/skins/default/xui/it/floater_post_process.xml b/indra/newview/skins/default/xui/it/floater_post_process.xml
deleted file mode 100644
index 3aa8b29101..0000000000
--- a/indra/newview/skins/default/xui/it/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="IMPOSTAZIONI DI POST-PRODUZIONE">
- <tab_container name="Post-Process Tabs">
- <panel label="Filtro Colore" name="wmiColorFilterPanel">
- <check_box label="Abilita" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- Luminosità
- </text>
- <text name="wmiColorFilterSaturationText">
- Saturazione
- </text>
- <text name="wmiColorFilterContrastText">
- Contrasto
- </text>
- <text name="wmiColorFilterBaseText">
- Colore Base Contrasto
- </text>
- <slider label="R" name="wmiColorFilterBaseR"/>
- <slider label="G" name="wmiColorFilterBaseG"/>
- <slider label="B" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="Visione Notturna" name="wmiNightVisionPanel">
- <check_box label="Abilita" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- Amplificazione Multipla Luce
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Ampiezza disturbo
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Forza disturbo
- </text>
- </panel>
- <panel label="Raggiatura" name="wmiBloomPanel">
- <check_box label="Abilita" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- Estrazione luminosità
- </text>
- <text name="wmiBloomSizeText">
- Dimensione raggiatura
- </text>
- <text name="wmiBloomStrengthText">
- Forza raggiatura
- </text>
- </panel>
- <panel label="Extra" name="Extras">
- <button label="Carica effetto" label_selected="Carica effetto" name="PPLoadEffect"/>
- <button label="Salva effetto" label_selected="Salva effetto" name="PPSaveEffect"/>
- <line_editor label="Nome Effetto" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml
deleted file mode 100644
index 9799b48d89..0000000000
--- a/indra/newview/skins/default/xui/it/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="DISPOSITIVI AUDIO">
- <text name="voice_label">
- Chat vocale
- </text>
- <check_box label="Abilitato" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
deleted file mode 100644
index f102622f5d..0000000000
--- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Luoghi" name="voice_effects" title="ANTEPRIMA MANIPOLAZIONE VOCE">
- <string name="no_voice_effect">
- (Nessuna manipolazione voce)
- </string>
- <string name="active_voice_effect">
- (Attivato)
- </string>
- <string name="unsubscribed_voice_effect">
- (Iscrizione annullata)
- </string>
- <string name="new_voice_effect">
- (Nuovo!)
- </string>
- <string name="effect_Arena">
- Arena
- </string>
- <string name="effect_Beast">
- Bestia
- </string>
- <string name="effect_Buff">
- Appassionato
- </string>
- <string name="effect_Buzz">
- Euforia
- </string>
- <string name="effect_Camille">
- Camilla
- </string>
- <string name="effect_Creepy">
- Terrificante
- </string>
- <string name="effect_CreepyBot">
- TerrificanteBot
- </string>
- <string name="effect_Cyber">
- Cyber
- </string>
- <string name="effect_DeepBot">
- ProfondoBot
- </string>
- <string name="effect_Demon">
- Demonio
- </string>
- <string name="effect_Female Elf">
- Elfo donna
- </string>
- <string name="effect_Flirty">
- Civettuolo
- </string>
- <string name="effect_Foxy">
- Scaltro
- </string>
- <string name="effect_Halloween 2010 Bonus">
- Halloween_2010_Bonus
- </string>
- <string name="effect_Helium">
- Elio
- </string>
- <string name="effect_Husky">
- Fusto
- </string>
- <string name="effect_Husky Whisper">
- Sospiro rauco
- </string>
- <string name="effect_Intercom">
- Interfono
- </string>
- <string name="effect_Julia">
- Julia
- </string>
- <string name="effect_Lo Lilt">
- Inflessione bassa
- </string>
- <string name="effect_Macho">
- Macho
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Model">
- Modella
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Incubo
- </string>
- <string name="effect_PopBot">
- PopBot
- </string>
- <string name="effect_Rachel">
- Rachele
- </string>
- <string name="effect_Radio">
- Radio
- </string>
- <string name="effect_Robot">
- Robot
- </string>
- <string name="effect_Roxanne">
- Rosanna
- </string>
- <string name="effect_Rumble">
- Rombo
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samanta
- </string>
- <string name="effect_Sexy">
- Sexy
- </string>
- <string name="effect_Shorty">
- Bassotto
- </string>
- <string name="effect_Smaller">
- Più piccolo
- </string>
- <string name="effect_Sneaky">
- Vile
- </string>
- <string name="effect_Stallion">
- Stallone
- </string>
- <string name="effect_Sultry">
- Focoso
- </string>
- <string name="effect_Thunder">
- Tuono
- </string>
- <string name="effect_Vixen">
- Maliziosa
- </string>
- <string name="effect_WhinyBot">
- PiangiBot
- </string>
- <text name="preview_text">
- Per l&apos;anteprima
- </text>
- <text name="status_text">
- Registra un campione di voce, quindi fai clic su un effetto per ascoltare il risultato.
- </text>
- <button label="Registra" name="record_btn" tool_tip="Registra un campione della tua voce."/>
- <button label="Ferma" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Subscribe Now]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Registra un campione della tua voce, quindi fai clic su uno degli effetti per un&apos;anteprima del risultato.">
- <scroll_list.columns label="Nome effetto" name="name"/>
- <scroll_list.columns label="Scade il" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/panel_voice_effect.xml b/indra/newview/skins/default/xui/it/panel_voice_effect.xml
deleted file mode 100644
index b43f766e5e..0000000000
--- a/indra/newview/skins/default/xui/it/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Disattiva manipolazione voce
- </string>
- <string name="preview_voice_effects">
- Anteprima manipolazione voce ▶
- </string>
- <string name="get_voice_effects">
- Ottieni manipolazione voce ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Scegli un effetto di manipolazione per modificare il suono della tua voce">
- <combo_box.item label="Disattiva manipolazione voce" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_big_preview.xml b/indra/newview/skins/default/xui/ja/floater_big_preview.xml
deleted file mode 100644
index e88d6fc488..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="プレビュー"/> \ No newline at end of file
diff --git a/indra/newview/skins/default/xui/ja/floater_post_process.xml b/indra/newview/skins/default/xui/ja/floater_post_process.xml
deleted file mode 100644
index 91ecbb73a2..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="ポストプロセス設定">
- <tab_container name="Post-Process Tabs">
- <panel label="カラー・フィルタ" name="wmiColorFilterPanel">
- <check_box label="有効" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- 明度
- </text>
- <text name="wmiColorFilterSaturationText">
- 彩度
- </text>
- <text name="wmiColorFilterContrastText">
- 輝度
- </text>
- <text name="wmiColorFilterBaseText">
- 輝度の基準色
- </text>
- <slider label="赤" name="wmiColorFilterBaseR"/>
- <slider label="緑" name="wmiColorFilterBaseG"/>
- <slider label="青" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="暗視" name="wmiNightVisionPanel">
- <check_box label="有効" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- 光の増幅(マルチ)
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- ノイズ・サイズ
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- ノイズ強度
- </text>
- </panel>
- <panel label="ブルーム" name="wmiBloomPanel">
- <check_box label="有効" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- 明度の抽出
- </text>
- <text name="wmiBloomSizeText">
- ブルーム・サイズ
- </text>
- <text name="wmiBloomStrengthText">
- ブルーム強度
- </text>
- </panel>
- <panel label="その他" name="Extras">
- <button label="効果読み込み" label_selected="効果読み込み" name="PPLoadEffect"/>
- <button label="効果保存" label_selected="効果保存" name="PPSaveEffect"/>
- <line_editor label="効果名" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml
deleted file mode 100644
index 28d2388bed..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="サウンドデバイス">
- <text name="voice_label">
- ボイスチャット
- </text>
- <check_box label="有効" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
deleted file mode 100644
index b38ea9331a..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="場所" name="voice_effects" title="ボイスモーフィングのプレビュー">
- <string name="no_voice_effect">
- (ボイスモーフィングなし)
- </string>
- <string name="active_voice_effect">
- (アクティブ)
- </string>
- <string name="unsubscribed_voice_effect">
- (取消し済み)
- </string>
- <string name="new_voice_effect">
- (新登場!)
- </string>
- <string name="effect_Arena">
- アリーナ
- </string>
- <string name="effect_Beast">
- 野獣
- </string>
- <string name="effect_Buff">
- がっしり
- </string>
- <string name="effect_Buzz">
- ブザー
- </string>
- <string name="effect_Camille">
- カミール
- </string>
- <string name="effect_Creepy">
- 気味の悪い
- </string>
- <string name="effect_CreepyBot">
- 気味わるボット
- </string>
- <string name="effect_Cyber">
- サイバー
- </string>
- <string name="effect_DeepBot">
- ディープボット
- </string>
- <string name="effect_Demon">
- デーモン
- </string>
- <string name="effect_Female Elf">
- 女性のエルフ
- </string>
- <string name="effect_Flirty">
- 気のありそうな
- </string>
- <string name="effect_Foxy">
- 魅惑的
- </string>
- <string name="effect_Halloween 2010 Bonus">
- ハロウィン_2010_ボーナス
- </string>
- <string name="effect_Helium">
- ヘリウム
- </string>
- <string name="effect_Husky">
- ハスキー
- </string>
- <string name="effect_Husky Whisper">
- スモーキーウィスパー
- </string>
- <string name="effect_Intercom">
- インターホン
- </string>
- <string name="effect_Julia">
- ジュリア
- </string>
- <string name="effect_Lo Lilt">
- 軽快
- </string>
- <string name="effect_Macho">
- マッチョ
- </string>
- <string name="effect_Micro">
- ミクロ
- </string>
- <string name="effect_Mini">
- ミニ
- </string>
- <string name="effect_Model">
- モデル
- </string>
- <string name="effect_Nano">
- ナノ
- </string>
- <string name="effect_Nightmare">
- 悪夢
- </string>
- <string name="effect_PopBot">
- ポップボット
- </string>
- <string name="effect_Rachel">
- レイチェル
- </string>
- <string name="effect_Radio">
- ラジオ
- </string>
- <string name="effect_Robot">
- ロボット
- </string>
- <string name="effect_Roxanne">
- ロクサン
- </string>
- <string name="effect_Rumble">
- ランブル
- </string>
- <string name="effect_Sabrina">
- サブリナ
- </string>
- <string name="effect_Samantha">
- サマンサ
- </string>
- <string name="effect_Sexy">
- セクシー
- </string>
- <string name="effect_Shorty">
- チビ
- </string>
- <string name="effect_Smaller">
- 小さめ
- </string>
- <string name="effect_Sneaky">
- コソコソ
- </string>
- <string name="effect_Stallion">
- 雄馬
- </string>
- <string name="effect_Sultry">
- 艶かしい
- </string>
- <string name="effect_Thunder">
- サンダー
- </string>
- <string name="effect_Vixen">
- 性悪な
- </string>
- <string name="effect_WhinyBot">
- 不機嫌ボット
- </string>
- <text name="preview_text">
- プレビュー
- </text>
- <text name="status_text">
- 声をテスト録音してからボイスエフェクトを1つクリックして聞いてみます。
- </text>
- <button label="録音" name="record_btn" tool_tip="あなたの声を録音します。"/>
- <button label="停止" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] 今すぐ申し込む]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="声を録音してボイスモーフィングを1つクリックすると、そのエフェクトをプレビューできます。">
- <scroll_list.columns label="ボイス名" name="name"/>
- <scroll_list.columns label="有効期限" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml
deleted file mode 100644
index 57a1bb7838..0000000000
--- a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- ボイスモーフィングなし
- </string>
- <string name="preview_voice_effects">
- ボイスモーフィングをプレビュー
- </string>
- <string name="get_voice_effects">
- ボイスモーフィングを取得
- </string>
- <combo_box name="voice_effect" tool_tip="ボイスモーフィングを選択してボイスを変更">
- <combo_box.item label="ボイスモーフィングなし" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_big_preview.xml b/indra/newview/skins/default/xui/pl/floater_big_preview.xml
deleted file mode 100644
index e730cff618..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<floater name="floater_big_preview" title="PODGLĄD" />
diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml
deleted file mode 100644
index 47c40d2315..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_post_process.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="Post-Process Floater" title="USTAWIENIA PRZETWARZANIA KOŃCOWEGO">
- <tab_container name="Post-Process Tabs">
- <panel label="Filtr koloru" name="wmiColorFilterPanel">
- <check_box label="Włącz" name="wmiColorFilterToggle" />
- <text name="wmiColorFilterBrightnessText">
- Jasność
- </text>
- <text name="wmiColorFilterSaturationText">
- Nasycenie
- </text>
- <text name="wmiColorFilterContrastText">
- Kontrast
- </text>
- <text name="wmiColorFilterBaseText">
- Kontrast koloru podstawowego
- </text>
- </panel>
- <panel label="Noktowizja" name="wmiNightVisionPanel">
- <check_box label="Włącz" name="wmiNightVisionToggle" />
- <text name="wmiNightVisionBrightMultText">
- Wielokrotne wzmocnienie światła
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Rozmiar szumu
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Moc szumu
- </text>
- </panel>
- <panel label="Poświata" name="wmiBloomPanel">
- <check_box label="Włącz" name="wmiBloomToggle" />
- <text name="wmiBloomExtractText">
- Ekstracja luminacji
- </text>
- <text name="wmiBloomSizeText">
- Rozmiar poświaty
- </text>
- <text name="wmiBloomStrengthText">
- Moc poświaty
- </text>
- </panel>
- <panel label="Dodatki" name="Extras">
- <button label="Wczytaj efekt" label_selected="Wczytaj efekt" name="PPLoadEffect" />
- <button label="Zapisz efekt" label_selected="Zapisz efekt" name="PPSaveEffect" />
- <line_editor label="Nazwa efektu" name="PPEffectNameEditor" />
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_sound_devices.xml b/indra/newview/skins/default/xui/pl/floater_sound_devices.xml
deleted file mode 100644
index 93a27f68a7..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="floater_sound_devices" title="URZĄDZENIA DŹWIĘKOWE">
- <text name="voice_label">
- Czat głos.
- </text>
- <check_box name="enable_voice" label="Włączone" />
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml b/indra/newview/skins/default/xui/pl/floater_voice_effect.xml
deleted file mode 100644
index b02266caa9..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="voice_effects" title="PODGLĄD PRZEKSZTAŁCANIA GŁOSU" label="Miejsca">
- <string name="no_voice_effect">
- (Bez Przekształcania)
- </string>
- <string name="active_voice_effect">
- (Aktywny)
- </string>
- <string name="unsubscribed_voice_effect">
- (Bez subskrybcji)
- </string>
- <string name="new_voice_effect">
- (Nowy!)
- </string>
- <string name="effect_Beast">
- Bestia
- </string>
- <string name="effect_Buzz">
- Brzęczenie
- </string>
- <string name="effect_Creepy">
- Przerażający
- </string>
- <string name="effect_Cyber">
- Cybernetyczny
- </string>
- <string name="effect_Female Elf">
- Kobiecy Elf
- </string>
- <string name="effect_Flirty">
- Flirt
- </string>
- <string name="effect_Foxy">
- Ponętny
- </string>
- <string name="effect_Helium">
- Hel
- </string>
- <string name="effect_Husky Whisper">
- Szept Husky
- </string>
- <string name="effect_Macho">
- Maczo
- </string>
- <string name="effect_Micro">
- Mikrus
- </string>
- <string name="effect_Mini">
- Miniaturowy
- </string>
- <string name="effect_Nano">
- Malutki
- </string>
- <string name="effect_Nightmare">
- Koszmar
- </string>
- <string name="effect_Rumble">
- Burczenie
- </string>
- <string name="effect_Sexy">
- Seksowny
- </string>
- <string name="effect_Shorty">
- Krótki
- </string>
- <string name="effect_Smaller">
- Mniejszy
- </string>
- <string name="effect_Sneaky">
- Podstępny
- </string>
- <string name="effect_Stallion">
- Ogier
- </string>
- <string name="effect_Sultry">
- Gorąco
- </string>
- <string name="effect_Thunder">
- Grzmot
- </string>
- <string name="effect_Vixen">
- Lisica
- </string>
- <text name="preview_text">
- Podgląd
- </text>
- <text name="status_text">
- Nagraj próbkę, a następnie kliknij na głos aby usłyszeć jego brzmienie.
- </text>
- <button label="Nagraj" name="record_btn" tool_tip="Nagraj próbkę swojego głosu." />
- <text name="voice_morphing_link">
- [[URL] Subskrybuj teraz]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Nagraj próbkę swojego głosu, a następnie kliknij na efekt aby odsłuchać podgląd.">
- <scroll_list.columns label="Nazwa głosu" name="name" />
- <scroll_list.columns label="Wygasa" name="expires" />
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml b/indra/newview/skins/default/xui/pl/panel_voice_effect.xml
deleted file mode 100644
index 94878943a1..0000000000
--- a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Wyłącz Przekształcanie
- </string>
- <string name="preview_voice_effects">
- Przeglądaj Przekształcania ▶
- </string>
- <string name="get_voice_effects">
- Uzyskaj Przekształcanie ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Wybierz odpowienie Przekształcanie Głosu, aby zmienić brzmienie swojego głosu">
- <combo_box.item label="Wyłącz Przekształcanie" name="no_voice_effect" />
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/floater_big_preview.xml b/indra/newview/skins/default/xui/pt/floater_big_preview.xml
deleted file mode 100644
index 76ca176689..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="VISUALIZAR"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_post_process.xml b/indra/newview/skins/default/xui/pt/floater_post_process.xml
deleted file mode 100644
index d4f2e96539..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="AJUSTES DE PÓS-PROCESSAMENTO">
- <tab_container name="Post-Process Tabs">
- <panel label="Filtro de Cor" name="wmiColorFilterPanel">
- <check_box label="Habilitar" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- Brilho
- </text>
- <text name="wmiColorFilterSaturationText">
- Saturação
- </text>
- <text name="wmiColorFilterContrastText">
- Contraste
- </text>
- <text name="wmiColorFilterBaseText">
- Cor Base do Contraste
- </text>
- <slider label="R" name="wmiColorFilterBaseR"/>
- <slider label="G" name="wmiColorFilterBaseG"/>
- <slider label="B" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="visão Noturna" name="wmiNightVisionPanel">
- <check_box label="Habilitar" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- Múltiplo de Amplificação de Luz
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Tamanho de Ruído
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Intensidade de Ruído
- </text>
- </panel>
- <panel label="Florescência" name="wmiBloomPanel">
- <check_box label="Habilitar" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- Extração de Luminosidade
- </text>
- <text name="wmiBloomSizeText">
- Tamanho da florescência
- </text>
- <text name="wmiBloomStrengthText">
- Inensidade da florescência
- </text>
- </panel>
- <panel label="Extras" name="Extras">
- <button label="CarregaEfeito" label_selected="CarregaEfeito" name="PPLoadEffect"/>
- <button label="SalvaEfeito" label_selected="SalvaEfeito" name="PPSaveEffect"/>
- <line_editor label="Nome do Efeito" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
deleted file mode 100644
index 948d727540..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="DISPOSITIVOS DE SOM">
- <text name="voice_label">
- Bate-papo de voz
- </text>
- <check_box label="Ativado" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
deleted file mode 100644
index 71d3c33ae5..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="AMOSTRA DE DISTORÇÃO DE VOZ">
- <string name="no_voice_effect">
- (Não distorcer voz)
- </string>
- <string name="active_voice_effect">
- (Ativo)
- </string>
- <string name="unsubscribed_voice_effect">
- (Cancelou)
- </string>
- <string name="new_voice_effect">
- (Novo!)
- </string>
- <string name="effect_Arena">
- Arena
- </string>
- <string name="effect_Beast">
- Fera
- </string>
- <string name="effect_Buff">
- Entusiasmado
- </string>
- <string name="effect_Buzz">
- Zumbido
- </string>
- <string name="effect_Camille">
- Camille
- </string>
- <string name="effect_Creepy">
- Assustador
- </string>
- <string name="effect_CreepyBot">
- RobôAssustador
- </string>
- <string name="effect_Cyber">
- Cyber
- </string>
- <string name="effect_DeepBot">
- RobôVozGrossa
- </string>
- <string name="effect_Demon">
- Demônio
- </string>
- <string name="effect_Female Elf">
- Elfa
- </string>
- <string name="effect_Flirty">
- Paquerador
- </string>
- <string name="effect_Foxy">
- Sensual
- </string>
- <string name="effect_Halloween 2010 Bonus">
- Bônus_Halloween_2010
- </string>
- <string name="effect_Helium">
- Hélio
- </string>
- <string name="effect_Husky">
- Rouco
- </string>
- <string name="effect_Husky Whisper">
- Sussurro rouco
- </string>
- <string name="effect_Intercom">
- Interfone
- </string>
- <string name="effect_Julia">
- Julia
- </string>
- <string name="effect_Lo Lilt">
- Cantarolado baixo
- </string>
- <string name="effect_Macho">
- Macho
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Model">
- Modelo
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Pesadelo
- </string>
- <string name="effect_PopBot">
- RobôPop
- </string>
- <string name="effect_Rachel">
- Rachel
- </string>
- <string name="effect_Radio">
- Rádio
- </string>
- <string name="effect_Robot">
- Robô
- </string>
- <string name="effect_Roxanne">
- Roxanne
- </string>
- <string name="effect_Rumble">
- Ronco
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samantha
- </string>
- <string name="effect_Sexy">
- Sexy
- </string>
- <string name="effect_Shorty">
- Baixinho
- </string>
- <string name="effect_Smaller">
- Menor
- </string>
- <string name="effect_Sneaky">
- Sorrateiro
- </string>
- <string name="effect_Stallion">
- Garanhão
- </string>
- <string name="effect_Sultry">
- Ardente
- </string>
- <string name="effect_Thunder">
- Trovão
- </string>
- <string name="effect_Vixen">
- Maliciosa
- </string>
- <string name="effect_WhinyBot">
- RobôReclamão
- </string>
- <text name="preview_text">
- Visualizar
- </text>
- <text name="status_text">
- Grave uma amostra da sua voz, depois clique em um efeito para ouvir o resultado.
- </text>
- <button label="Gravar" name="record_btn" tool_tip="Grave uma amostra da sua voz."/>
- <button label="Parar" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Assine agora]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Grave sua voz por alguns instantes, depois clique num efeito para ouvir a distorção.">
- <scroll_list.columns label="Nome da voz" name="name"/>
- <scroll_list.columns label="Vence em" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml
deleted file mode 100644
index 1d7878408a..0000000000
--- a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Distorção de voz desligada
- </string>
- <string name="preview_voice_effects">
- Checar distorção de voz ▶
- </string>
- <string name="get_voice_effects">
- Distorcer voz ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Selecione um efeito de distorção para mudar sua voz.">
- <combo_box.item label="Distorção de voz desligada" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/ru/floater_big_preview.xml b/indra/newview/skins/default/xui/ru/floater_big_preview.xml
deleted file mode 100644
index cdacebadef..0000000000
--- a/indra/newview/skins/default/xui/ru/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="ПРОСМОТР"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_post_process.xml b/indra/newview/skins/default/xui/ru/floater_post_process.xml
deleted file mode 100644
index ae97670548..0000000000
--- a/indra/newview/skins/default/xui/ru/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="НАСТРОЙКИ ПОСЛЕДУЮЩЕЙ ОБРАБОТКИ">
- <tab_container name="Post-Process Tabs">
- <panel label="Цветовой фильтр" name="wmiColorFilterPanel">
- <check_box label="Вкл." name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- Яркость
- </text>
- <text name="wmiColorFilterSaturationText">
- Насыщенность
- </text>
- <text name="wmiColorFilterContrastText">
- Контрастность
- </text>
- <text name="wmiColorFilterBaseText">
- Основной цвет контрастности
- </text>
- <slider label="К" name="wmiColorFilterBaseR"/>
- <slider label="З" name="wmiColorFilterBaseG"/>
- <slider label="С" name="wmiColorFilterBaseB"/>
- <slider label="И" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="Ночное видение" name="wmiNightVisionPanel">
- <check_box label="Вкл." name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- Коэффициент усиления света
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Размер искажений
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Мощность искажений
- </text>
- </panel>
- <panel label="Ореол" name="wmiBloomPanel">
- <check_box label="Вкл." name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- Яркость света
- </text>
- <text name="wmiBloomSizeText">
- Размер ореола
- </text>
- <text name="wmiBloomStrengthText">
- Мощность ореола
- </text>
- </panel>
- <panel label="Дополнительно" name="Extras">
- <button label="Загрузить эффект" label_selected="Загрузить эффект" name="PPLoadEffect"/>
- <button label="Сохранить эффект" label_selected="Сохранить эффект" name="PPSaveEffect"/>
- <line_editor label="Название эффекта" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
deleted file mode 100644
index fc8de858cd..0000000000
--- a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="ЗВУКОВЫЕ УСТРОЙСТВА">
- <text name="voice_label">
- Голосовой чат
- </text>
- <check_box label="Включен" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
deleted file mode 100644
index d3cef042a3..0000000000
--- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Места" name="voice_effects" title="ПРОСМОТР ИЗМЕНЕНИЯ ГОЛОСА">
- <string name="no_voice_effect">
- (Нет изменения голоса)
- </string>
- <string name="active_voice_effect">
- (Активно)
- </string>
- <string name="unsubscribed_voice_effect">
- (Нет подписки)
- </string>
- <string name="new_voice_effect">
- (Новый!)
- </string>
- <string name="effect_Arena">
- Arena
- </string>
- <string name="effect_Beast">
- Beast
- </string>
- <string name="effect_Buff">
- Buff
- </string>
- <string name="effect_Buzz">
- Buzz
- </string>
- <string name="effect_Camille">
- Camille
- </string>
- <string name="effect_Creepy">
- Creepy
- </string>
- <string name="effect_CreepyBot">
- CreepyBot
- </string>
- <string name="effect_Cyber">
- Cyber
- </string>
- <string name="effect_DeepBot">
- DeepBot
- </string>
- <string name="effect_Demon">
- Demon
- </string>
- <string name="effect_Female Elf">
- Фея
- </string>
- <string name="effect_Flirty">
- Flirty
- </string>
- <string name="effect_Foxy">
- Foxy
- </string>
- <string name="effect_Halloween 2010 Bonus">
- Бонус_за_Хэллоуин_2010
- </string>
- <string name="effect_Helium">
- Helium
- </string>
- <string name="effect_Husky">
- Husky
- </string>
- <string name="effect_Husky Whisper">
- Хриплый шепот
- </string>
- <string name="effect_Intercom">
- Внутренняя связь
- </string>
- <string name="effect_Julia">
- Julia
- </string>
- <string name="effect_Lo Lilt">
- Напев
- </string>
- <string name="effect_Macho">
- Macho
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Model">
- Модель
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Nightmare
- </string>
- <string name="effect_PopBot">
- PopBot
- </string>
- <string name="effect_Rachel">
- Rachel
- </string>
- <string name="effect_Radio">
- Radio
- </string>
- <string name="effect_Robot">
- Robot
- </string>
- <string name="effect_Roxanne">
- Roxanne
- </string>
- <string name="effect_Rumble">
- Урчание
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samantha
- </string>
- <string name="effect_Sexy">
- Sexy
- </string>
- <string name="effect_Shorty">
- Shorty
- </string>
- <string name="effect_Smaller">
- Меньше
- </string>
- <string name="effect_Sneaky">
- Sneaky
- </string>
- <string name="effect_Stallion">
- Stallion
- </string>
- <string name="effect_Sultry">
- Sultry
- </string>
- <string name="effect_Thunder">
- Thunder
- </string>
- <string name="effect_Vixen">
- Vixen
- </string>
- <string name="effect_WhinyBot">
- WhinyBot
- </string>
- <text name="preview_text">
- Прослушивание
- </text>
- <text name="status_text">
- Запишите образец, затем щелкните, чтобы услышать, как будет звучать голос.
- </text>
- <button label="Запись" name="record_btn" tool_tip="Записать образец вашего голоса."/>
- <button label="Стоп" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Подписаться]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Запишите образец вашего голоса, затем щелкните, чтобы прослушать эффект.">
- <scroll_list.columns label="Название голоса" name="name"/>
- <scroll_list.columns label="Истекает" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
deleted file mode 100644
index de0b38198f..0000000000
--- a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Изменение голоса отключено
- </string>
- <string name="preview_voice_effects">
- Прослушать изменение голоса ▶
- </string>
- <string name="get_voice_effects">
- Приобрести изменение голоса ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Выбор типа изменения для своего голоса">
- <combo_box.item label="Изменение голоса отключено" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/tr/floater_big_preview.xml b/indra/newview/skins/default/xui/tr/floater_big_preview.xml
deleted file mode 100644
index c99a71d3c2..0000000000
--- a/indra/newview/skins/default/xui/tr/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="ÖNİZLEME"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_post_process.xml b/indra/newview/skins/default/xui/tr/floater_post_process.xml
deleted file mode 100644
index 5e419f8ffa..0000000000
--- a/indra/newview/skins/default/xui/tr/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="İŞLEM SONRASI AYARLARI">
- <tab_container name="Post-Process Tabs">
- <panel label="Renk Filtresi" name="wmiColorFilterPanel">
- <check_box label="Etkinleştir" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- Parlaklık
- </text>
- <text name="wmiColorFilterSaturationText">
- Doygunluk
- </text>
- <text name="wmiColorFilterContrastText">
- Kontrast
- </text>
- <text name="wmiColorFilterBaseText">
- Kontrast Baz Rengi
- </text>
- <slider label="R" name="wmiColorFilterBaseR"/>
- <slider label="G" name="wmiColorFilterBaseG"/>
- <slider label="B" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="Gece Görüşü" name="wmiNightVisionPanel">
- <check_box label="Etkinleştir" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- Işık Yükseltme Çarpanı
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- Gürültü Büyüklüğü
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- Gürültü Gücü
- </text>
- </panel>
- <panel label="Işıma" name="wmiBloomPanel">
- <check_box label="Etkinleştir" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- Parlaklık Çıkarma
- </text>
- <text name="wmiBloomSizeText">
- Işıma Büyüklüğü
- </text>
- <text name="wmiBloomStrengthText">
- Işıma Gücü
- </text>
- </panel>
- <panel label="Ekstralar" name="Extras">
- <button label="EfektYükle" label_selected="EfektYükle" name="PPLoadEffect"/>
- <button label="EfektKaydet" label_selected="EfektKaydet" name="PPSaveEffect"/>
- <line_editor label="Efekt Adı" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
deleted file mode 100644
index 470a222d7e..0000000000
--- a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="SES CİHAZLARI">
- <text name="voice_label">
- Sesli Sohbet
- </text>
- <check_box label="Etkin" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
deleted file mode 100644
index 7a157244cd..0000000000
--- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Yerler" name="voice_effects" title="SES ŞEKİLLENDİRME ÖNİZLEMESİ">
- <string name="no_voice_effect">
- (Ses Şekillendirme Yok)
- </string>
- <string name="active_voice_effect">
- (Etkin)
- </string>
- <string name="unsubscribed_voice_effect">
- (Abonelik İptal)
- </string>
- <string name="new_voice_effect">
- (Yeni!)
- </string>
- <string name="effect_Arena">
- Arena
- </string>
- <string name="effect_Beast">
- Yaratık
- </string>
- <string name="effect_Buff">
- Yapılı
- </string>
- <string name="effect_Buzz">
- Vızıltı
- </string>
- <string name="effect_Camille">
- Camille
- </string>
- <string name="effect_Creepy">
- Korkutucu
- </string>
- <string name="effect_CreepyBot">
- KorkutucuBot
- </string>
- <string name="effect_Cyber">
- Siber
- </string>
- <string name="effect_DeepBot">
- DerinBot
- </string>
- <string name="effect_Demon">
- İblis
- </string>
- <string name="effect_Female Elf">
- Dişi Cin
- </string>
- <string name="effect_Flirty">
- Cilveli
- </string>
- <string name="effect_Foxy">
- Alımlı
- </string>
- <string name="effect_Halloween 2010 Bonus">
- Halloween_2010_Bonus
- </string>
- <string name="effect_Helium">
- Helyum
- </string>
- <string name="effect_Husky">
- Güçlü
- </string>
- <string name="effect_Husky Whisper">
- Boğuk Fısıltı
- </string>
- <string name="effect_Intercom">
- İnterkom
- </string>
- <string name="effect_Julia">
- Julia
- </string>
- <string name="effect_Lo Lilt">
- Yavaş Mırıltı
- </string>
- <string name="effect_Macho">
- Maço
- </string>
- <string name="effect_Micro">
- Mikro
- </string>
- <string name="effect_Mini">
- Mini
- </string>
- <string name="effect_Model">
- Model
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- Kabus
- </string>
- <string name="effect_PopBot">
- PopBot
- </string>
- <string name="effect_Rachel">
- Rachel
- </string>
- <string name="effect_Radio">
- Radyo
- </string>
- <string name="effect_Robot">
- Robot
- </string>
- <string name="effect_Roxanne">
- Roxanne
- </string>
- <string name="effect_Rumble">
- Gurultu
- </string>
- <string name="effect_Sabrina">
- Sabrina
- </string>
- <string name="effect_Samantha">
- Samantha
- </string>
- <string name="effect_Sexy">
- Seksi
- </string>
- <string name="effect_Shorty">
- Bücür
- </string>
- <string name="effect_Smaller">
- Daha Küçük
- </string>
- <string name="effect_Sneaky">
- Sinsi
- </string>
- <string name="effect_Stallion">
- Maskülen
- </string>
- <string name="effect_Sultry">
- İhtiraslı
- </string>
- <string name="effect_Thunder">
- Gök gürültüsü
- </string>
- <string name="effect_Vixen">
- Çekici
- </string>
- <string name="effect_WhinyBot">
- AğlakBot
- </string>
- <text name="preview_text">
- Önizleme için
- </text>
- <text name="status_text">
- Bir örnek kaydettikten sonra sese tıklayarak nasıl olduğunu duyun.
- </text>
- <button label="Kaydet" name="record_btn" tool_tip="Sesinizin örneğini kaydedin."/>
- <button label="Durdur" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] Hemen Abone Ol]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="Sesinizin örneğini kaydettikten sonra önizleme için bir efekte tıklayın.">
- <scroll_list.columns label="Ses Adı" name="name"/>
- <scroll_list.columns label="Bitiş Tarihi" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
deleted file mode 100644
index b46833d7e6..0000000000
--- a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- Ses Şekillendirme Kapalı
- </string>
- <string name="preview_voice_effects">
- Ses Şekillendirme Önizleme ▶
- </string>
- <string name="get_voice_effects">
- Ses Şekillendirmeyi Etkinleştir ▶
- </string>
- <combo_box name="voice_effect" tool_tip="Sesinizi değiştirmek için bir Ses Şekli seçin">
- <combo_box.item label="Ses Şekillendirme Kapalı" name="no_voice_effect"/>
- </combo_box>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/floater_big_preview.xml b/indra/newview/skins/default/xui/zh/floater_big_preview.xml
deleted file mode 100644
index ae68cd7ddf..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_big_preview.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_big_preview" title="預覽"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_post_process.xml b/indra/newview/skins/default/xui/zh/floater_post_process.xml
deleted file mode 100644
index 2908f7c1d0..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="後處理設定:">
- <tab_container name="Post-Process Tabs">
- <panel label="顏色過濾" name="wmiColorFilterPanel">
- <check_box label="啟用" name="wmiColorFilterToggle"/>
- <text name="wmiColorFilterBrightnessText">
- 亮度
- </text>
- <text name="wmiColorFilterSaturationText">
- 飽和度
- </text>
- <text name="wmiColorFilterContrastText">
- 對比
- </text>
- <text name="wmiColorFilterBaseText">
- 對比基本色
- </text>
- <slider label="R" name="wmiColorFilterBaseR"/>
- <slider label="G" name="wmiColorFilterBaseG"/>
- <slider label="B" name="wmiColorFilterBaseB"/>
- <slider label="I" name="wmiColorFilterBaseI"/>
- </panel>
- <panel label="夜視" name="wmiNightVisionPanel">
- <check_box label="啟用" name="wmiNightVisionToggle"/>
- <text name="wmiNightVisionBrightMultText">
- 光放大倍數
- </text>
- <text name="wmiNightVisionNoiseSizeText">
- 噪音規模
- </text>
- <text name="wmiNightVisionNoiseStrengthText">
- 噪音強度
- </text>
- </panel>
- <panel label="開花" name="wmiBloomPanel">
- <check_box label="啟用" name="wmiBloomToggle"/>
- <text name="wmiBloomExtractText">
- 光度萃取
- </text>
- <text name="wmiBloomSizeText">
- 開花大小
- </text>
- <text name="wmiBloomStrengthText">
- 開花強度
- </text>
- </panel>
- <panel label="其他" name="Extras">
- <button label="LoadEffect" label_selected="LoadEffect" name="PPLoadEffect"/>
- <button label="SaveEffect" label_selected="SaveEffect" name="PPSaveEffect"/>
- <line_editor label="效果名稱" name="PPEffectNameEditor"/>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml b/indra/newview/skins/default/xui/zh/floater_sound_devices.xml
deleted file mode 100644
index 0374c74f8f..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="聲音裝置">
- <text name="voice_label">
- 語音聊天
- </text>
- <check_box label="已啟用" name="enable_voice"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
deleted file mode 100644
index aab5fa6028..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="地點" name="voice_effects" title="語音變聲試聽">
- <string name="no_voice_effect">
- (無變聲效果)
- </string>
- <string name="active_voice_effect">
- (使用中)
- </string>
- <string name="unsubscribed_voice_effect">
- (已停止訂用)
- </string>
- <string name="new_voice_effect">
- (新的!)
- </string>
- <string name="effect_Arena">
- 競技場
- </string>
- <string name="effect_Beast">
- 野獸
- </string>
- <string name="effect_Buff">
- Buff
- </string>
- <string name="effect_Buzz">
- Buzz
- </string>
- <string name="effect_Camille">
- 卡蜜兒
- </string>
- <string name="effect_Creepy">
- 怪異
- </string>
- <string name="effect_CreepyBot">
- 怪異機器人
- </string>
- <string name="effect_Cyber">
- 科幻
- </string>
- <string name="effect_DeepBot">
- 深沉機器人
- </string>
- <string name="effect_Demon">
- 魔鬼
- </string>
- <string name="effect_Female Elf">
- 女性 - 小精靈
- </string>
- <string name="effect_Flirty">
- 調情
- </string>
- <string name="effect_Foxy">
- 香豔
- </string>
- <string name="effect_Halloween 2010 Bonus">
- 2010萬聖節加贈
- </string>
- <string name="effect_Helium">
- 氦氣
- </string>
- <string name="effect_Husky">
- 沙啞
- </string>
- <string name="effect_Husky Whisper">
- 沙啞耳語
- </string>
- <string name="effect_Intercom">
- 對講機
- </string>
- <string name="effect_Julia">
- 茱莉亞
- </string>
- <string name="effect_Lo Lilt">
- 輕微抑揚頓挫
- </string>
- <string name="effect_Macho">
- 陽剛
- </string>
- <string name="effect_Micro">
- Micro
- </string>
- <string name="effect_Mini">
- 迷你
- </string>
- <string name="effect_Model">
- 模型
- </string>
- <string name="effect_Nano">
- Nano
- </string>
- <string name="effect_Nightmare">
- 惡夢
- </string>
- <string name="effect_PopBot">
- PopBot
- </string>
- <string name="effect_Rachel">
- 瑞秋
- </string>
- <string name="effect_Radio">
- 收音機
- </string>
- <string name="effect_Robot">
- 機器人
- </string>
- <string name="effect_Roxanne">
- 蘿姍
- </string>
- <string name="effect_Rumble">
- 低沉隆隆聲
- </string>
- <string name="effect_Sabrina">
- 薩賓娜
- </string>
- <string name="effect_Samantha">
- 姍曼莎
- </string>
- <string name="effect_Sexy">
- 性感
- </string>
- <string name="effect_Shorty">
- 矮個兒
- </string>
- <string name="effect_Smaller">
- 較小
- </string>
- <string name="effect_Sneaky">
- 鬼祟
- </string>
- <string name="effect_Stallion">
- 種馬
- </string>
- <string name="effect_Sultry">
- 勾魂
- </string>
- <string name="effect_Thunder">
- 雷聲
- </string>
- <string name="effect_Vixen">
- 潑婦
- </string>
- <string name="effect_WhinyBot">
- 哭鬧機器人
- </string>
- <text name="preview_text">
- 預覽
- </text>
- <text name="status_text">
- 錄下一段樣本,再點按聲音檢查結果。
- </text>
- <button label="錄音" name="record_btn" tool_tip="錄下一段你的聲音。"/>
- <button label="停止" name="record_stop_btn"/>
- <text name="voice_morphing_link">
- [[URL] 現在訂用]
- </text>
- <scroll_list name="voice_effect_list" tool_tip="錄下一段你的聲音,再點選一個效果試聽。">
- <scroll_list.columns label="語音名稱" name="name"/>
- <scroll_list.columns label="過期" name="expires"/>
- </scroll_list>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml b/indra/newview/skins/default/xui/zh/panel_voice_effect.xml
deleted file mode 100644
index 6c8a452014..0000000000
--- a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_voice_effect">
- <string name="no_voice_effect">
- 關閉變聲效果
- </string>
- <string name="preview_voice_effects">
- 預覽變聲效果 ▶
- </string>
- <string name="get_voice_effects">
- 取得變聲效果 ▶
- </string>
- <combo_box name="voice_effect" tool_tip="選取一個變聲效果來改變你的聲音">
- <combo_box.item label="關閉變聲效果" name="no_voice_effect"/>
- </combo_box>
-</panel>