diff --git a/.gitignore b/.gitignore index 5acd04bb91..9c08783dc2 100755 --- a/.gitignore +++ b/.gitignore @@ -111,8 +111,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 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/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index dddfeb0342..1000483070 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -27015,5 +27015,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..f81bc78ed0 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"); @@ -1120,8 +1116,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(); + constexpr 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 @@ -1157,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; + 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) + { + 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; @@ -1174,9 +1194,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()) { @@ -1200,8 +1217,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); } 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/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 30c9866dc1..838632e864 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -5900,6 +5900,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. diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 11a0065887..f689719e9f 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -14775,6 +14775,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]). + + + テレポート経路: - + 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_fs_export.xml b/indra/newview/skins/default/xui/ja/floater_fs_export.xml index c837924a8d..0487793d6c 100644 --- a/indra/newview/skins/default/xui/ja/floater_fs_export.xml +++ b/indra/newview/skins/default/xui/ja/floater_fs_export.xml @@ -4,16 +4,16 @@ [OBJECT]をハードディスクにバックアップ… - [OBJECT]のバックアップ‐情報を集めています… + [OBJECT]のバックアップ-情報を集めています… - [OBJECT]のバックアップ‐インベントリを取得しています… + [OBJECT]のバックアップ-インベントリを取得しています… - [OBJECT]のバックアップ‐アセットを取得しています… + [OBJECT]のバックアップ-アセットを取得しています… - [OBJECT]のバックアップ‐テクスチャを取得しています… + [OBJECT]のバックアップ-テクスチャを取得しています… diff --git a/indra/newview/skins/default/xui/ja/floater_fs_group.xml b/indra/newview/skins/default/xui/ja/floater_fs_group.xml index f475514c37..d833afa207 100644 --- a/indra/newview/skins/default/xui/ja/floater_fs_group.xml +++ b/indra/newview/skins/default/xui/ja/floater_fs_group.xml @@ -4,9 +4,9 @@ 新しいグループを作成… - グループのプロフィール‐読み込んでいます… + グループのプロフィール-読み込んでいます… - グループのプロフィール‐[NAME] + グループのプロフィール-[NAME] \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/floater_fs_money_tracker.xml b/indra/newview/skins/default/xui/ja/floater_fs_money_tracker.xml index d08212c4a5..50800603ea 100644 --- a/indra/newview/skins/default/xui/ja/floater_fs_money_tracker.xml +++ b/indra/newview/skins/default/xui/ja/floater_fs_money_tracker.xml @@ -6,7 +6,7 @@ - 支払ったL$ [PAID]‐受け取ったL$ [RECEIVED] + 支払ったL$ [PAID]-受け取ったL$ [RECEIVED]