diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 0c5714d952..d810d365bc 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -159,8 +159,8 @@ void LLConsole::draw()
//
//static const F32 padding_horizontal = 10;
//static const F32 padding_vertical = 3;
- static const F32 padding_horizontal = 15;
- static const F32 padding_vertical = 8;
+ constexpr F32 padding_horizontal = 15;
+ constexpr F32 padding_vertical = 8;
//
LLGLSUIDefault gls_ui;
@@ -177,7 +177,7 @@ void LLConsole::draw()
// [FIRE-35039] Add flag to show/hide the on-screen console
// Get the Show On-screen Console flag from the Comm menu
- static LLCachedControl showOnscreenConsole(*LLUI::getInstance()->mSettingGroups["config"], "FSShowOnscreenConsole");
+ static LLUICachedControl showOnscreenConsole("FSShowOnscreenConsole");
// If the Show On-screen Console flag is disabled and the current console is the global console
// (Not a debug console), then don't try to draw
if (!showOnscreenConsole && this == gConsole)
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 1cbbe2cefc..eaee046923 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -25456,6 +25456,17 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
1
+ FSStatusBarShowFPSColors
+
FSExperimentalLostAttachmentsFix
+ FSLocalMeshApplyJointOffsets
+
diff --git a/indra/newview/llagentbenefits.cpp b/indra/newview/llagentbenefits.cpp
index f176b14f00..5b737e35f3 100644
--- a/indra/newview/llagentbenefits.cpp
+++ b/indra/newview/llagentbenefits.cpp
@@ -37,6 +37,7 @@
#include "llviewerregion.h"
//
+
LLAgentBenefits::LLAgentBenefits():
m_initalized(false),
m_animated_object_limit(-1),
@@ -213,7 +214,27 @@ S32 LLAgentBenefits::getPicksLimit() const
{
// OpenSim legacy economy
//return m_picks_limit;
- return LLGridManager::instance().isInSecondLife() ? m_picks_limit : LLAgentPicksInfo::instance().getMaxNumberOfPicks();
+ if (LLGridManager::instance().isInSecondLife())
+ {
+ return m_picks_limit;
+ }
+ else
+ {
+ constexpr S32 MAX_OPENSIM_PICKS_FALLBACK = 20; // [FIRE-35276] Freeze on OpenSim (default agreed with Ubit Umarov) (originally by Haklezz)
+
+ S32 max_profile_picks = MAX_OPENSIM_PICKS_FALLBACK;
+
+ if (gAgent.getRegion())
+ {
+ LLSD features;
+ gAgent.getRegion()->getSimulatorFeatures(features);
+ if (features.has("MaxProfilePicks"))
+ {
+ max_profile_picks = features["MaxProfilePicks"].asInteger();
+ }
+ }
+ return max_profile_picks;
+ }
//
}
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 5ffcc1a059..50409190eb 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -386,11 +386,6 @@ void LLFace::switchTexture(U32 ch, LLViewerTexture* new_texture)
return;
}
- // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
- // Need to update the new textures to the old textures boost and max virtual size, so they won't
- new_texture->setBoostLevel(mTexture[ch]->getBoostLevel());
- new_texture->addTextureStats(mTexture[ch]->getMaxVirtualSize());
- // [FIRE-35081]
if (ch == LLRender::DIFFUSE_MAP)
{
if (getViewerObject())
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index 429171e6be..8979b419cd 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -3147,10 +3147,10 @@ void LLPanelProfileNotes::updateData()
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim() && gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty())
{
- LLUUID avatar_id = getAvatarId();
- if (!getStarted() && avatar_id.notNull() && gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty() && !getSelfProfile())
- {
- setIsLoading();
+ LLUUID avatar_id = getAvatarId();
+ if (!getStarted() && avatar_id.notNull())
+ {
+ setIsLoading();
LLAvatarPropertiesProcessor::getInstance()->sendAvatarNotesRequest(avatar_id);
}
}
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index f6e682dd5e..070c56c828 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -604,44 +604,48 @@ void LLStatusBar::refresh()
static LLCachedControl fsStatusBarShowFPS(gSavedSettings, "FSStatusBarShowFPS");
if (fsStatusBarShowFPS && mFPSUpdateTimer.getElapsedTimeF32() > 1.f)
{
+ static LLCachedControl fsStatusBarShowFPSColors(gSavedSettings, "FSStatusBarShowFPSColors");
static LLCachedControl max_fps(gSavedSettings, "FramePerSecondLimit");
static LLCachedControl limit_fps_enabled(gSavedSettings, "FSLimitFramerate");
static LLCachedControl vsync_enabled(gSavedSettings, "RenderVSyncEnable");
- static const auto fps_below_limit_color = LLUIColorTable::instance().getColor("Yellow");
- static const auto fps_limit_reached_color = LLUIColorTable::instance().getColor("Green");
- static const auto vsync_limit_reached_color = LLUIColorTable::instance().getColor("Green");
- static const auto fps_uncapped_color = LLUIColorTable::instance().getColor("White");
- static const auto fps_unfocussed_color = LLUIColorTable::instance().getColor("Gray");
+ static const auto fps_below_limit_color = LLUIColorTable::instance().getColor("FpsDisplayBelowLimitColor");
+ static const auto fps_limit_reached_color = LLUIColorTable::instance().getColor("FpsDisplayFpsLimitReachedColor");
+ static const auto vsync_limit_reached_color = LLUIColorTable::instance().getColor("FpsDisplayVSyncLimitReachedColor");
+ static const auto fps_uncapped_color = LLUIColorTable::instance().getColor("FpsDisplayUncappedColor");
+ static const auto fps_unfocussed_color = LLUIColorTable::instance().getColor("FpsDisplayUnfocussedColor");
static auto current_fps_color = fps_uncapped_color;
mFPSUpdateTimer.reset();
const auto fps = LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS);
mFPSText->setText(llformat("%.1f", fps));
- // if background, go grey, else go white unless we have a cap (checked next)
auto fps_color{ fps_uncapped_color };
- auto window = gViewerWindow ? gViewerWindow->getWindow() : nullptr;
- if ((window && !window->getVisible()) || !gFocusMgr.getAppHasFocus())
+ if (fsStatusBarShowFPSColors)
{
- fps_color = fps_unfocussed_color;
- }
- else
- {
- S32 vsync_freq{ -1 };
- if (window)
+ // if background, go grey, else go white unless we have a cap (checked next)
+ auto window = gViewerWindow ? gViewerWindow->getWindow() : nullptr;
+ if ((window && !window->getVisible()) || !gFocusMgr.getAppHasFocus())
{
- vsync_freq = window->getRefreshRate();
+ fps_color = fps_unfocussed_color;
}
+ else
+ {
+ S32 vsync_freq{ -1 };
+ if (window)
+ {
+ vsync_freq = window->getRefreshRate();
+ }
- if (limit_fps_enabled && max_fps > 0)
- {
- fps_color = (fps >= max_fps - 1) ? fps_limit_reached_color : fps_below_limit_color;
- }
- // use vsync if enabled and the freq is lower than the max_fps
- if (vsync_enabled && vsync_freq > 0 && (!limit_fps_enabled || vsync_freq < (S32)max_fps))
- {
- fps_color = (fps >= vsync_freq - 1) ? vsync_limit_reached_color : fps_below_limit_color;
+ if (limit_fps_enabled && max_fps > 0)
+ {
+ fps_color = (fps >= max_fps - 1) ? fps_limit_reached_color : fps_below_limit_color;
+ }
+ // use vsync if enabled and the freq is lower than the max_fps
+ if (vsync_enabled && vsync_freq > 0 && (!limit_fps_enabled || vsync_freq < (S32)max_fps))
+ {
+ fps_color = (fps >= vsync_freq - 1) ? vsync_limit_reached_color : fps_below_limit_color;
+ }
}
}
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
index de0ed645eb..a4d9945783 100644
--- a/indra/newview/llurllineeditorctrl.cpp
+++ b/indra/newview/llurllineeditorctrl.cpp
@@ -86,6 +86,10 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
// *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335).
if (LLStringUtil::startsWith(unescaped_text, "http://") || LLStringUtil::startsWith(unescaped_text, "secondlife://")) // SLURL
text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
+ // [FIRE-34020] Copy of address bar contents does not URL encode space in region name for OpenSim only
+ else if (LLStringUtil::startsWith(unescaped_text, "hop://"))
+ text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
+ //
else // human-readable location
text_to_copy = utf8str_to_wstring(unescaped_text);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 404e49fbaa..a85a7e8de2 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5166,6 +5166,13 @@ class FSSelfCheckMoveLock : public view_listener_t
if (LLGridManager::getInstance()->isInSecondLife())
{
new_value = gSavedPerAccountSettings.getBOOL("UseMoveLock");
+ // prevents having Move Lock activated but disabled when for some reason the LSL Bridge is not worn or not ready
+ if (new_value && !enable_bridge_function())
+ {
+ gSavedPerAccountSettings.setBOOL("UseMoveLock", false);
+ new_value = false;
+ }
+ //
}
#ifdef OPENSIM
else
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index fd34d13037..0d9dba41d2 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1414,11 +1414,7 @@ F32 LLViewerTextureList::updateImagesFetchTextures(F32 max_time)
iter = mUUIDMap.begin();
}
- // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
- //if (iter->second->getGLTexture())
- // Can skip processing TEX_LIST_SCALED as they are UI elements and should not be discarded
- if (iter->second->getGLTexture() && get_element_type(iter->second->getBoostLevel()) == TEX_LIST_STANDARD)
- // [FIRE-35081]
+ if (iter->second->getGLTexture())
{
entries.push_back(iter->second);
}
diff --git a/indra/newview/skins/ansastorm/colors.xml b/indra/newview/skins/ansastorm/colors.xml
index c19e259f61..7790e005dc 100644
--- a/indra/newview/skins/ansastorm/colors.xml
+++ b/indra/newview/skins/ansastorm/colors.xml
@@ -1413,4 +1413,19 @@
+
+
+
+
+
diff --git a/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml b/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml
index 0f57699a34..386c423b2f 100644
--- a/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml
+++ b/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml
@@ -1406,4 +1406,19 @@
+
+
+
+
+
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 916cfbd71d..52b5ad65d5 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -1381,4 +1381,19 @@
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
index f1a396ccc0..47d5ddd525 100644
--- a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
@@ -10,6 +10,7 @@
+
diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml
index 8f57418564..c365729f9c 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -33,7 +33,7 @@
-
+
200.0
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 3774f25ca7..b01a41ab79 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -165,7 +165,7 @@ Additional code generously contributed to Firestorm by:
top_pad="4"
width="450"
wrap="true">
-Aira Yumi, Albatroz Hird, Alexie Birman, Andromeda Rage, Angus Boyd, Animats, Armin Weatherwax, Ayane Lyla, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Dax Dupont, Denver Maksim, Dragonborn Forzane, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hitomi Tiponi, humbletim, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, minerjr, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, rafak360, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, 小滢 Zi Ying, Zwagoth Klaar and others.
+Aira Yumi, Albatroz Hird, Alexie Birman, Andromeda Rage, Angus Boyd, Animats, Armin Weatherwax, Ayane Lyla, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Dax Dupont, Denver Maksim, Dragonborn Forzane, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hecklezz, Hitomi Tiponi, humbletim, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, minerjr, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, rafak360, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, 小滢 Zi Ying, Zwagoth Klaar and others.
-
-
+
diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
index c8cf632d2e..fbc39c2b52 100644
--- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
@@ -118,6 +118,19 @@
function="CheckControl"
parameter="FSStatusBarShowFPS" />
+
+
+
+
+
diff --git a/indra/newview/vjlocalmeshimportdae.cpp b/indra/newview/vjlocalmeshimportdae.cpp
index b1ac619e27..d6f8fd40cc 100644
--- a/indra/newview/vjlocalmeshimportdae.cpp
+++ b/indra/newview/vjlocalmeshimportdae.cpp
@@ -753,34 +753,36 @@ bool LLLocalMeshImportDAE::processSkin(daeDatabase* collada_db, daeElement* coll
}
}
}
-
- int jointname_idx = 0;
- for (auto jointname_iterator = skininfop->mJointNames.begin(); jointname_iterator != skininfop->mJointNames.end(); ++jointname_iterator, ++jointname_idx)
+ static LLCachedControl apply_joint_offsets(gSavedSettings, "FSLocalMeshApplyJointOffsets");
+ if (apply_joint_offsets)
{
- std::string name_lookup = jointname_iterator->mName;
- if (joint_map.find(name_lookup) == joint_map.end())
+ int jointname_idx = 0;
+ for (auto jointname_iterator = skininfop->mJointNames.begin();
+ jointname_iterator != skininfop->mJointNames.end();
+ ++jointname_iterator, ++jointname_idx)
{
- pushLog("DAE Importer", "WARNING: Unknown joint named " + name_lookup + " found, skipping over it.");
- continue;
+ std::string name_lookup = jointname_iterator->mName;
+ if (joint_map.find(name_lookup) == joint_map.end())
+ {
+ pushLog("DAE Importer", "WARNING: Unknown joint named " + name_lookup + " found, skipping over it.");
+ continue;
+ }
+ else
+ {
+ LL_DEBUGS("LocalMesh") << "Calc invBindMat for joint name: " << name_lookup << LL_ENDL;
+ }
+ if (skininfop->mInvBindMatrix.size() <= jointname_idx)
+ {
+ pushLog("DAE Importer", "WARNING: Requesting out of bounds joint named " + name_lookup);
+ break;
+ }
+ LLMatrix4 newinverse = LLMatrix4(skininfop->mInvBindMatrix[jointname_idx].getF32ptr());
+ const auto& joint_translation = joint_transforms[name_lookup].getTranslation();
+ newinverse.setTranslation(joint_translation);
+ skininfop->mAlternateBindMatrix.push_back(LLMatrix4a(newinverse));
}
- else
- {
- LL_DEBUGS("LocalMesh") << "Calc invBindMat for joint name: " << name_lookup << LL_ENDL;
- }
-
- if (skininfop->mInvBindMatrix.size() <= jointname_idx)
- {
- // doesn't seem like a critical fail that should invalidate the entire skin, just break and move on?
- pushLog("DAE Importer", "WARNING: Requesting out of bounds joint named " + name_lookup);
- break;
- }
-
- LLMatrix4 newinverse = LLMatrix4(skininfop->mInvBindMatrix[jointname_idx].getF32ptr());
- const auto& joint_translation = joint_transforms[name_lookup].getTranslation();
- newinverse.setTranslation(joint_translation);
- skininfop->mAlternateBindMatrix.push_back( LLMatrix4a(newinverse) );
}
-
+
size_t bind_count = skininfop->mAlternateBindMatrix.size();
if ((bind_count > 0) && (bind_count != skininfop->mJointNames.size()))
{