From ed687991f66cc6f1ea030f153cb41fc94bda2944 Mon Sep 17 00:00:00 2001 From: chanayane Date: Thu, 13 Mar 2025 15:03:47 +0100 Subject: [PATCH 01/12] prevents having Move Lock activated but disabled when for some reason the LSL Bridge is not worn or not ready --- indra/newview/llviewermenu.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index a25ff25cee..fcf1f6b105 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -5141,6 +5141,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 From ac93966a8420de08e1d37eecbe986f48e5d20b76 Mon Sep 17 00:00:00 2001 From: humbletim Date: Thu, 20 Mar 2025 18:04:32 -0400 Subject: [PATCH 02/12] FIRE-34020 - Copy of address bar contents does not URL encode space in region name for OpenSim only Escape clipboard URLs starting with hop:// too --- indra/newview/llurllineeditorctrl.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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); From 653a9b4df7dbe9901903112b637fdbdae8b360eb Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Sun, 23 Mar 2025 17:58:58 +1000 Subject: [PATCH 03/12] Fix for client freeze in OpenSim getting picks limit --- indra/newview/llagentbenefits.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llagentbenefits.cpp b/indra/newview/llagentbenefits.cpp index f176b14f00..63dd55693e 100644 --- a/indra/newview/llagentbenefits.cpp +++ b/indra/newview/llagentbenefits.cpp @@ -37,6 +37,8 @@ #include "llviewerregion.h" // +constexpr S32 MAX_OPENSIM_PICKS = S32_MAX; // [FIRE-35276] Fix for client freeze in OpenSim getting picks limit + LLAgentBenefits::LLAgentBenefits(): m_initalized(false), m_animated_object_limit(-1), @@ -213,7 +215,7 @@ S32 LLAgentBenefits::getPicksLimit() const { // OpenSim legacy economy //return m_picks_limit; - return LLGridManager::instance().isInSecondLife() ? m_picks_limit : LLAgentPicksInfo::instance().getMaxNumberOfPicks(); + return LLGridManager::instance().isInSecondLife() ? m_picks_limit : MAX_OPENSIM_PICKS; // } From fe125e167b1a514d1f3b6bdc5a013fff495cb6a0 Mon Sep 17 00:00:00 2001 From: minerjr Date: Sun, 23 Mar 2025 14:14:57 -0300 Subject: [PATCH 04/12] FIRE-35280 - Inventory gallery and combination view no longer display thumbnails Reverted change to the LLViewerTextureList's updateImageFetchTextures which was intended to skip processing UI textures to downscale as they don't need to be changed, but the problem is if a new local texture is created it does not get processed. --- indra/newview/llviewertexturelist.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 6903e1ec6a..04522d9b65 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1401,11 +1401,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); } From 2802475f053e54d047bea870c43dbe3c42d5facd Mon Sep 17 00:00:00 2001 From: minerjr Date: Mon, 24 Mar 2025 07:22:53 -0300 Subject: [PATCH 05/12] FIRE-35081 - Fix crash on load Reverted added code for the LLFace::switchTexture to update the texture being passed in to use the existing texture boost and max virtual size as the mTexture[ch] may be NULL or invalid due to being deleted. --- indra/newview/llface.cpp | 5 ----- 1 file changed, 5 deletions(-) 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()) From 8c57cb9076e9f61d9a119fef9de22ecae158873e Mon Sep 17 00:00:00 2001 From: Beq Date: Sun, 23 Mar 2025 22:14:41 +0000 Subject: [PATCH 06/12] [FIRE-35276] add OpenSim MaxProfilePicks support and set fallback to 20 Fallback value agreed with Ubit. --- indra/newview/llagentbenefits.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/indra/newview/llagentbenefits.cpp b/indra/newview/llagentbenefits.cpp index 63dd55693e..5b737e35f3 100644 --- a/indra/newview/llagentbenefits.cpp +++ b/indra/newview/llagentbenefits.cpp @@ -37,7 +37,6 @@ #include "llviewerregion.h" // -constexpr S32 MAX_OPENSIM_PICKS = S32_MAX; // [FIRE-35276] Fix for client freeze in OpenSim getting picks limit LLAgentBenefits::LLAgentBenefits(): m_initalized(false), @@ -215,7 +214,27 @@ S32 LLAgentBenefits::getPicksLimit() const { // OpenSim legacy economy //return m_picks_limit; - return LLGridManager::instance().isInSecondLife() ? m_picks_limit : MAX_OPENSIM_PICKS; + 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; + } // } From 6410a2597520f45fc5ff49d12fde098ebf0b3eea Mon Sep 17 00:00:00 2001 From: Beq Date: Mon, 24 Mar 2025 12:11:27 +0000 Subject: [PATCH 07/12] Add "Hecklezz" to contributors --- indra/newview/skins/default/xui/en/floater_about.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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. Date: Mon, 24 Mar 2025 13:45:22 +0100 Subject: [PATCH 08/12] Make colors for FPS display optional and themeable --- indra/newview/app_settings/settings.xml | 11 ++++ indra/newview/llstatusbar.cpp | 50 ++++++++++--------- indra/newview/skins/ansastorm/colors.xml | 15 ++++++ .../ansastorm/themes/classic_brown/colors.xml | 15 ++++++ indra/newview/skins/default/colors.xml | 15 ++++++ .../skins/default/xui/de/menu_hide_navbar.xml | 1 + .../skins/default/xui/de/panel_status_bar.xml | 2 +- .../skins/default/xui/en/menu_hide_navbar.xml | 13 +++++ 8 files changed, 98 insertions(+), 24 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 45d2941acf..b28681798a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -25423,6 +25423,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 + FSStatusBarShowFPSColors + + Comment + If enabled, display FPS number in a color based on the current status. + Persist + 1 + Type + Boolean + Value + 1 + FSExperimentalLostAttachmentsFix Comment 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/skins/ansastorm/colors.xml b/indra/newview/skins/ansastorm/colors.xml index 70634c08d7..bcaba9ba01 100644 --- a/indra/newview/skins/ansastorm/colors.xml +++ b/indra/newview/skins/ansastorm/colors.xml @@ -1410,4 +1410,19 @@ + + + + + diff --git a/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml b/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml index e35d792e45..8b269290fe 100644 --- a/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml +++ b/indra/newview/skins/ansastorm/themes/classic_brown/colors.xml @@ -1403,4 +1403,19 @@ + + + + + diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index d7bbd28619..ac8aae67e8 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -1378,4 +1378,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 @@