Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
fd3b9e8
Initial changes for async inventory
rohvani Oct 1, 2025
0e5bc2e
Add support for AsyncInventoryMaxConcurrentFetches
rohvani Oct 1, 2025
24b833f
General improvements to async inventory
rohvani Oct 1, 2025
61778b4
Allow us to use cat versions from cache
rohvani Oct 1, 2025
07665b7
Fix cache dehydration
rohvani Oct 1, 2025
55931a2
Some cleanup changes
rohvani Oct 6, 2025
4181183
Performance optimizations around UI
rohvani Oct 6, 2025
a136f86
Add workflow_dispatch trigger to build workflow (#4774)
bennettgoble Oct 2, 2025
0743423
Fix lingering inventory after async skeleton failures (#4894)
marchcat Oct 24, 2025
aa20ce3
Merge branch 'release/2025.08' into pepper/async-inventory
Geenz Oct 24, 2025
9ce7af3
Merge branch 'release/2025.08' into pepper/async-inventory
Geenz Oct 28, 2025
7278895
#4893 Drop unused llpanel XML filename reference
marchcat Oct 28, 2025
456eddd
#4893 Extract async inventory skeleton loader
marchcat Oct 29, 2025
b0a94df
#4893 Tighten LLView child cache
marchcat Oct 29, 2025
105e1ec
Merge pull request #4906 from secondlife/marchcat/async-inv-4893
marchcat Oct 29, 2025
6fcfcd5
Merge branch 'release/2025.08' into pepper/async-inventory
marchcat Nov 6, 2025
8325e69
#4893 Enable async inventory loading by default
marchcat Nov 6, 2025
5526832
#4893 Use LOG_INV constant for inventory logging
marchcat Nov 6, 2025
1e38ebc
Merge branch 'release/2026.01' into pepper/async-inventory
marchcat Dec 3, 2025
cc96921
#4893 Build fix
marchcat Dec 3, 2025
8e8541e
Update LLTextBase to match #4932
marchcat Dec 3, 2025
ac56675
Merge branch 'release/2026.01' into pepper/async-inventory
marchcat Mar 5, 2026
dfefd12
Merge branch 'develop' into pepper/async-inventory
akleshchev Apr 10, 2026
9f3b3ca
Post-merge fix
akleshchev Apr 10, 2026
ef741ff
#4893 Add destructor to LLAsyncInventorySkeletonLoader to clean up ca…
marchcat Apr 15, 2026
3f1901c
#4893 Fix mChildNameCache safety: verify pointer before erasing to ha…
marchcat Apr 15, 2026
5bf5984
#4893 Revert singleton capture_dependency skip to preserve dependency…
marchcat Apr 15, 2026
4e9591b
#4893 Use BUILD_ONE_FOLDER in initRootContent to ensure system folder…
marchcat Apr 15, 2026
abfac3e
Trim whitespace
marchcat Apr 15, 2026
54b6af9
#4893 Build essential system folder children at init to fix nested fo…
marchcat Apr 16, 2026
1f77b86
#4893 Skip descendent count validation during async inventory loading
marchcat Apr 20, 2026
e4e7856
#4893 Fix double-nested loop in loadFromFile causing N-squared catego…
marchcat Apr 21, 2026
896b017
#4893 Only mark failed for essential folder fetch failures
marchcat Apr 21, 2026
4605bbc
#4893 Distinguish post-essential-ready failures in log output
marchcat Apr 21, 2026
24b9f18
#4893 Reset stale async loader state on relog
marchcat Apr 21, 2026
c8746b4
#4893 Only mark categories as fetched on successful response
marchcat Apr 21, 2026
650be71
#4893 Fix login timeout: trust cached essentials, prioritize essentia…
marchcat Apr 21, 2026
34fc7c6
#4893 Use depth=0 for initial root/library AIS fetches to avoid serve…
marchcat Apr 21, 2026
6f419b7
#4893 Defer non-essential fetches until essential-ready phase completes
marchcat Apr 21, 2026
49b4fb5
Merge pull request #5651 from secondlife/marchcat/4893
marchcat Apr 23, 2026
d503e86
Merge branch 'release/26.3' into marchcat/26.3-async-inv
marchcat Apr 23, 2026
d4a557a
#4893 Remove mChildNameCache from LLView
marchcat Apr 30, 2026
a3bb16a
Merge pull request #5746 from secondlife/marchcat/26.3-async-inv
marchcat May 1, 2026
673b587
#4893 Remove unrelated llpanel.cpp optimization
marchcat May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions indra/llinventory/llfoldertype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,24 @@ bool LLFolderType::lookupIsEnsembleType(EType folder_type)
folder_type <= FT_ENSEMBLE_END);
}

// static
bool LLFolderType::lookupIsEssentialType(EType folder_type)
{
if (folder_type == FT_NONE)
{
return false;
}

if (folder_type == FT_ROOT_INVENTORY)
{
return true;
}

// Essential folders are those needed for basic viewer operation:
// singleton system folders and ensemble (outfit) folders
return lookupIsSingletonType(folder_type) || lookupIsEnsembleType(folder_type);
}

// static
LLAssetType::EType LLFolderType::folderTypeToAssetType(LLFolderType::EType folder_type)
{
Expand Down
2 changes: 2 additions & 0 deletions indra/llinventory/llfoldertype.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ class LL_COMMON_API LLFolderType
static bool lookupIsAutomaticType(EType folder_type);
static bool lookupIsSingletonType(EType folder_type);
static bool lookupIsEnsembleType(EType folder_type);
// Returns true if this folder type should be fully loaded during async inventory startup
static bool lookupIsEssentialType(EType folder_type);

static LLAssetType::EType folderTypeToAssetType(LLFolderType::EType folder_type);
static LLFolderType::EType assetTypeToFolderType(LLAssetType::EType asset_type);
Expand Down
2 changes: 2 additions & 0 deletions indra/newview/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ set(viewer_SOURCE_FILES
llappearancemgr.cpp
llappviewer.cpp
llappviewerlistener.cpp
llasyncinventoryskeletonloader.cpp
llattachmentsmgr.cpp
llaudiosourcevo.cpp
llautoreplace.cpp
Expand Down Expand Up @@ -786,6 +787,7 @@ set(viewer_HEADER_FILES
llappearancemgr.h
llappviewer.h
llappviewerlistener.h
llasyncinventoryskeletonloader.h
llattachmentsmgr.h
llaudiosourcevo.h
llautoreplace.h
Expand Down
66 changes: 66 additions & 0 deletions indra/newview/app_settings/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3291,6 +3291,72 @@
<key>Value</key>
<integer>255</integer>
</map>
<key>ForceAsyncInventorySkeleton</key>
<map>
<key>Comment</key>
<string>Force viewer to skip legacy login inventory skeleton and rely on async AIS fetching.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>AsyncInventoryMaxConcurrentFetches</key>
<map>
<key>Comment</key>
<string>Maximum number of concurrent AIS fetches used during async inventory skeleton loading.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>2</integer>
</map>
<key>AsyncInventoryNotifyMinInterval</key>
<map>
<key>Comment</key>
<string>Minimum seconds between inventory observer notifications while async inventory loading is active.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>0.05</real>
</map>
<key>AsyncInventoryCapsTimeout</key>
<map>
<key>Comment</key>
<string>Maximum seconds to wait for inventory capabilities during async skeleton loading.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>45.0</real>
</map>
<key>AsyncInventoryFetchTimeout</key>
<map>
<key>Comment</key>
<string>Maximum seconds for the entire async inventory skeleton fetch process.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>180.0</real>
</map>
<key>AsyncInventoryEssentialTimeout</key>
<map>
<key>Comment</key>
<string>Maximum seconds to wait for essential inventory folders during async loading.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>90.0</real>
</map>
<key>ForceLoginURL</key>
<map>
<key>Comment</key>
Expand Down
Loading
Loading