From f27f8220d39ef5e0bc6975d5b635ee161c9d8197 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Thu, 18 Sep 2025 12:53:16 +0200 Subject: [PATCH 01/12] FIRE-35961 Update Japanese translation, by Logue Takacs --- .../skins/ansastorm/xui/ja/floater_camera.xml | 1 + .../skins/default/xui/ja/floater_beacons.xml | 3 +- .../skins/default/xui/ja/floater_camera.xml | 3 +- .../xui/ja/floater_fs_camera_small.xml | 31 +++++-------------- .../xui/ja/floater_phototools_camera.xml | 11 +++++-- .../default/xui/ja/panel_preferences_move.xml | 1 + .../newview/skins/default/xui/ja/strings.xml | 5 ++- 7 files changed, 25 insertions(+), 30 deletions(-) diff --git a/indra/newview/skins/ansastorm/xui/ja/floater_camera.xml b/indra/newview/skins/ansastorm/xui/ja/floater_camera.xml index 9f078e0221..150e59e293 100644 --- a/indra/newview/skins/ansastorm/xui/ja/floater_camera.xml +++ b/indra/newview/skins/ansastorm/xui/ja/floater_camera.xml @@ -29,6 +29,7 @@ + diff --git a/indra/newview/skins/default/xui/ja/floater_beacons.xml b/indra/newview/skins/default/xui/ja/floater_beacons.xml index ffb8ee5dd3..0279bb4be5 100644 --- a/indra/newview/skins/default/xui/ja/floater_beacons.xml +++ b/indra/newview/skins/default/xui/ja/floater_beacons.xml @@ -5,10 +5,11 @@ 表示: + - + 幅: diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml index 326d6da209..b06b27137c 100644 --- a/indra/newview/skins/default/xui/ja/floater_camera.xml +++ b/indra/newview/skins/default/xui/ja/floater_camera.xml @@ -19,9 +19,10 @@ + - + diff --git a/indra/newview/skins/default/xui/ja/floater_fs_camera_small.xml b/indra/newview/skins/default/xui/ja/floater_fs_camera_small.xml index 9d81d1891d..f9d93435a2 100644 --- a/indra/newview/skins/default/xui/ja/floater_fs_camera_small.xml +++ b/indra/newview/skins/default/xui/ja/floater_fs_camera_small.xml @@ -39,31 +39,14 @@ - - - - - - - - - - - - + + + + - - - - - - - - - - - - + + + diff --git a/indra/newview/skins/default/xui/ja/floater_phototools_camera.xml b/indra/newview/skins/default/xui/ja/floater_phototools_camera.xml index a412f823a1..14a0ad21b7 100644 --- a/indra/newview/skins/default/xui/ja/floater_phototools_camera.xml +++ b/indra/newview/skins/default/xui/ja/floater_phototools_camera.xml @@ -22,17 +22,22 @@ - 前面ビュー + 前方ビュー - 側面ビュー + サイドビュー - 背面ビュー + 後方ビュー + + + + + 三人称ビュー diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml index cb0aab617c..0baeb81d86 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml @@ -58,6 +58,7 @@ + リージョンを越える移動の予告: diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 78de3a4f58..dc365b92fb 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -5583,7 +5583,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ - パーティクル源ビーコン(青)を表示しています。 + パーティクル源のビーコン(青)を表示しています。 物理的オブジェクトのビーコン(緑)を表示しています。 @@ -5597,6 +5597,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ サウンドビーコン(黄)を表示しています。 + + リージョンのコーナー(黄)を表示しています。 + メディアビーコン(白)を表示しています。 From d992570ea927259880b1d5e8d0dae9b1a7db34b6 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Thu, 18 Sep 2025 18:54:48 +0200 Subject: [PATCH 02/12] Add VS temp folders to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 0a684b7ce5..8589efc875 100755 --- a/.gitignore +++ b/.gitignore @@ -112,8 +112,10 @@ indra/newview/pilot.xml # Firestorm additions indra/newview/exoflickrkeys.h indra/newview/fsdiscordkey.h +indra/tools/vstool/obj/*/*.cache my_autobuild.xml .vscode +.vs *.srctrlbm *.srctrldb *.srctrlprj From 34d087040c36b41362f3982471d0501b7321ded7 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Sat, 20 Sep 2025 14:00:52 +0200 Subject: [PATCH 03/12] Add a visual warning (not just information in logfile) about too many outfits --- indra/newview/app_settings/settings.xml | 13 +++++++++++++ indra/newview/lloutfitslist.cpp | 17 +++++++++++++++-- .../skins/default/xui/en/notifications.xml | 12 ++++++++++++ .../skins/default/xui/pl/notifications.xml | 4 ++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index eab78b98a8..d7f957bb82 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -27004,5 +27004,18 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + FSLargeOutfitsWarningInThisSession + + Comment + Internal; Suppresses the 'too many outfits' warning (does not persist across sessions) + HideFromEditor + 1 + Persist + 0 + Type + Boolean + Value + 0 + diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 9b35bf425d..ba5335e8df 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -1120,8 +1120,21 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id) } // FIRE-6958/VWR-2862; Handle large amounts of outfits, write a least a warning into the logs. - if (mRefreshListState.Added.size() > 128) - LL_WARNS() << "Large amount of outfits found: " << mRefreshListState.Added.size() << " this may cause hangs and disconnects" << LL_ENDL; + S32 currentOutfitsAmount = (S32)mRefreshListState.Added.size(); + S32 maxSuggestedOutfits = 200; + if (currentOutfitsAmount > maxSuggestedOutfits) + { + LL_WARNS() << "Large amount of outfits found: " << currentOutfitsAmount << " this may cause hangs and disconnects" << LL_ENDL; + static LLCachedControl fsLargeOutfitsWarningInThisSession(gSavedSettings, "FSLargeOutfitsWarningInThisSession"); + if (!fsLargeOutfitsWarningInThisSession) + { + gSavedSettings.setBOOL("FSLargeOutfitsWarningInThisSession", true); + LLSD args; + args["AMOUNT"] = currentOutfitsAmount; + args["MAX"] = maxSuggestedOutfits; + LLNotificationsUtil::add("FSLargeOutfitsWarningInThisSession", args); + } + } // // FIRE-12939: Add outfit count to outfits list diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d21531516b..6cec00f22b 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -14764,6 +14764,18 @@ https://wiki.firestormviewer.org/antivirus_whitelisting yestext="Okay"/> + + + A large number of outfits were detected: [AMOUNT]. This may cause viewer hangs or disconnects. Consider reducing the number of outfits for better performance (below [MAX]). + + + + + Została wykryta duża liczba strojów: [AMOUNT]. Może to powodować zawieszanie się lub rozłączanie przeglądarki. Rozważ zmniejszenie liczby strojów dla lepszej wydajności (poniżej [MAX]). + + Żądanie logowania odrzucone przez Primfeed. From b48c1b630dfe41f81176cf84ea05f05375ca70d7 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Sat, 20 Sep 2025 22:10:21 +1000 Subject: [PATCH 04/12] Fix OpenJPEG uploading small textures by correctly accounting for the maximum numresolutions Merged upstream in PR-4708 --- indra/llimagej2coj/llimagej2coj.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp index 2bd6239dd3..0cc0646f63 100644 --- a/indra/llimagej2coj/llimagej2coj.cpp +++ b/indra/llimagej2coj/llimagej2coj.cpp @@ -576,15 +576,6 @@ public: } - if (!opj_setup_encoder(encoder, ¶meters, image)) - { - return false; - } - - opj_set_info_handler(encoder, opj_info, this); - opj_set_warning_handler(encoder, opj_warn, this); - opj_set_error_handler(encoder, opj_error, this); - U32 width_tiles = (rawImageIn.getWidth() >> 6); U32 height_tiles = (rawImageIn.getHeight() >> 6); @@ -598,6 +589,23 @@ public: height_tiles = 1; } + if (width_tiles == 1 || height_tiles == 1) + { + // Images with either dimension less than 32 need less number of resolutions otherwise they error + int min_dim = rawImageIn.getWidth() < rawImageIn.getHeight() ? rawImageIn.getWidth() : rawImageIn.getHeight(); + int max_res = 1 + (int)floor(log2(min_dim)); + parameters.numresolution = max_res; + } + + if (!opj_setup_encoder(encoder, ¶meters, image)) + { + return false; + } + + opj_set_info_handler(encoder, opj_info, this); + opj_set_warning_handler(encoder, opj_warn, this); + opj_set_error_handler(encoder, opj_error, this); + U32 tile_count = width_tiles * height_tiles; U32 data_size_guess = tile_count * TILE_SIZE; From 9e3cef558cb0b7005a33c523ce91b7cfc747a6e0 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 20 Sep 2025 16:54:14 +0200 Subject: [PATCH 05/12] Update German translation --- indra/newview/skins/default/xui/de/notifications.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index e448e8b932..da59e66d5b 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -5896,6 +5896,10 @@ https://wiki.firestormviewer.org/antivirus_whitelisting Bestehende Pose „[POSE_NAME]“ überschreiben? + + Eine große Anzahl an Outfits wurde erkannt: [AMOUNT]. Dies kann zu einem Blockieren des Viewers oder zu Verbindungsabbrüchen führen. Ziehen Sie eine Reduzierung der Outfits für eine bessere Performance in Betracht (unter [MAX]). + + Login-Anfrage wurde von Primfeed abgelehnt. From b911b633987f2d1067224f3ae4e1338e4214504f Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 20 Sep 2025 16:55:21 +0200 Subject: [PATCH 06/12] Remove Nicky's original outfit list performance fix that now act counterproductive and completely ignores the max processing time of the idle callback update --- indra/llui/llaccordionctrl.cpp | 15 ++------------- indra/llui/llaccordionctrl.h | 6 +----- indra/newview/lloutfitslist.cpp | 15 ++++----------- 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 58266fc2d8..495ba2f40f 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -316,11 +316,7 @@ void LLAccordionCtrl::ctrlShiftVertical(LLView* panel, S32 delta) //--------------------------------------------------------------------------------- -// If adding a lot of controls rapidly, calling arrange will cost a lot of times, as it's running through n! controls. -// In that case we can avvoid calling arrange over and over and just call it once when finished. -//void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab) -void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab, bool aArrange) -// +void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab) { if (!accordion_tab) return; @@ -329,14 +325,7 @@ void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab, bool mAccordionTabs.push_back(accordion_tab); accordion_tab->setDropDownStateChangedCallback( boost::bind(&LLAccordionCtrl::onCollapseCtrlCloseOpen, this, (S16)(mAccordionTabs.size() - 1)) ); - - // If adding a lot of controls rapidly, calling arrange will cost a lot of times, as it's running through n! controls. - // In that case we can avvoid calling arrange over and over and just call it once when finished. - - // arrange(); - if( aArrange ) - arrange(); - // + arrange(); } void LLAccordionCtrl::removeCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab) diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h index c4d7c276e1..43a33a2b3c 100644 --- a/indra/llui/llaccordionctrl.h +++ b/indra/llui/llaccordionctrl.h @@ -103,11 +103,7 @@ public: // Call reshape after changing splitter's size virtual void reshape(S32 width, S32 height, bool called_from_parent = true); - // If adding a lot of controls rapidly, calling arrange will cost a lot of times, as it's running through n! controls. - // In that case we can avvoid calling arrange over and over and just call it once when finished. - // void addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab); - void addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab, bool aArrange = true /*Standard is true as to not mess with old code all over the place*/ ); - // + void addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab); void removeCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab); void arrange(); diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index ba5335e8df..3b44f7a22e 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -220,11 +220,7 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id) // *TODO: LLUICtrlFactory::defaultBuilder does not use "display_children" from xml. Should be investigated. tab->setDisplayChildren(false); - - // Calling this when there's a lot of outfits causes horrible perfomance and disconnects, due to arrange eating so many cpu cycles. - //mAccordion->addCollapsibleCtrl(tab); - mAccordion->addCollapsibleCtrl(tab, false); - // + mAccordion->addCollapsibleCtrl(tab); // Start observing the new outfit category. LLWearableItemsList* list = tab->getChild("wearable_items_list"); @@ -1121,7 +1117,7 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id) // FIRE-6958/VWR-2862; Handle large amounts of outfits, write a least a warning into the logs. S32 currentOutfitsAmount = (S32)mRefreshListState.Added.size(); - S32 maxSuggestedOutfits = 200; + constexpr S32 maxSuggestedOutfits = 200; if (currentOutfitsAmount > maxSuggestedOutfits) { LL_WARNS() << "Large amount of outfits found: " << currentOutfitsAmount << " this may cause hangs and disconnects" << LL_ENDL; @@ -1187,9 +1183,6 @@ void LLOutfitListBase::onIdleRefreshList() mRefreshListState.Added.clear(); mRefreshListState.AddedIterator = mRefreshListState.Added.end(); - // We called mAccordion->addCollapsibleCtrl with false as second paramter and did not let it arrange itself each time. Do this here after all is said and done. - arrange(); - // Handle removed tabs. while (mRefreshListState.RemovedIterator < mRefreshListState.Removed.end()) { @@ -1213,8 +1206,8 @@ void LLOutfitListBase::onIdleRefreshList() // Links aren't supposed to be allowed here, check only cats if (cat) - { - std::string name = cat->getName(); + { + std::string name = cat->getName(); updateChangedCategoryName(cat, name); } From 1e299cc480b5ee1df999dcede731312e38d40902 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Sat, 20 Sep 2025 20:37:06 +0200 Subject: [PATCH 07/12] Scale MAX_TIME in LLOutfitListBase::onIdleRefreshList() with FPS to avoid overloading the viewer with function calls at low frame rates Partial solution / prosthesis for FIRE-35936; Does not fix the core problem with the UI refreshing, but helps with freezing a bit --- indra/newview/lloutfitslist.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 3b44f7a22e..e20202ee5d 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -1166,7 +1166,18 @@ void LLOutfitListBase::onIdleRefreshList() return; } - const F64 MAX_TIME = 0.05f; + // Scale MAX_TIME with FPS to avoid overloading the viewer with function calls at low frame rates + // const F64 MAX_TIME = 0.05f; + F64 MAX_TIME = 0.05f; + const F64 min_time = 0.001f; + const F64 threshold_fps = 30.0; + const auto current_fps = LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS, 1); + if (current_fps < threshold_fps) + { + MAX_TIME = min_time + (current_fps / threshold_fps) * (MAX_TIME - min_time); + } + // + F64 curent_time = LLTimer::getTotalSeconds(); const F64 end_time = curent_time + MAX_TIME; From ad4743706751ba7375e4031db2c49b321c5921a9 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Sat, 20 Sep 2025 20:49:13 +0200 Subject: [PATCH 08/12] Follow up; const -> constexpr --- indra/newview/lloutfitslist.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index e20202ee5d..f81bc78ed0 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -1169,8 +1169,8 @@ void LLOutfitListBase::onIdleRefreshList() // Scale MAX_TIME with FPS to avoid overloading the viewer with function calls at low frame rates // const F64 MAX_TIME = 0.05f; F64 MAX_TIME = 0.05f; - const F64 min_time = 0.001f; - const F64 threshold_fps = 30.0; + constexpr F64 min_time = 0.001f; + constexpr F64 threshold_fps = 30.0; const auto current_fps = LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS, 1); if (current_fps < threshold_fps) { From 3ead31393eded33eb25ccf34265c673f1f7c8304 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Tue, 23 Sep 2025 22:35:10 +0200 Subject: [PATCH 09/12] =?UTF-8?q?FIRE-35969=20Chinese=20Translation=20Upda?= =?UTF-8?q?te,=20by=20=E5=B0=8F=E6=BB=A2=20Zi=20Ying?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- indra/newview/skins/default/xui/zh/notifications.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 3349667037..1ca7e3a135 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -5784,6 +5784,10 @@ https://wiki.firestormviewer.org/antivirus_whitelisting 是否覆蓋現有的姿勢「[POSE_NAME]」? + + 检测到大量装扮:[AMOUNT]。这可能会导致查看器卡顿或连接断开。请考虑将装扮数量限制在[MAX]以内,以提升性能。 + + Primfeed 登錄請求被拒絕。 From f67642f122f79764ee0b8f26df276169a4a9817d Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Tue, 23 Sep 2025 22:54:23 +0200 Subject: [PATCH 10/12] FIRE-35885 related: Preferences tabs are cut off at the bottom in Starlight CUI skin --- indra/newview/skins/starlightcui/xui/en/floater_preferences.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml b/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml index 4e21f44797..f581e6ba95 100644 --- a/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml +++ b/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml @@ -99,7 +99,7 @@ https://accounts.secondlife.com/change_email/ Date: Wed, 24 Sep 2025 20:11:32 +0200 Subject: [PATCH 11/12] Minor Polish translation adjustment --- indra/newview/skins/default/xui/pl/panel_outfits_list.xml | 2 ++ indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml | 1 + 2 files changed, 3 insertions(+) diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml index 42c392531f..3a26415be7 100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml @@ -5,11 +5,13 @@ + [COUNT] strojów Złożoność: [WEIGHT] +