diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-08-15 00:00:40 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-08-15 00:00:40 +0300 | 
| commit | fa5af90e30aaaf638d5083dff6258a66da06c00c (patch) | |
| tree | 1ef39bd2dfb696cf741e8dcce4b10dc69eb29a6b /indra | |
| parent | 809ebe7d6a98ec2ed450f3fd0bdb95dc8bd648cd (diff) | |
SL-18629 Fix observers failing to start fetching items in some cases
start(folder.first) ignored fetch request due to folder having version
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinventoryobserver.cpp | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 0b02528246..0d96c7a005 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -266,8 +266,8 @@ void LLInventoryFetchItemsObserver::startFetch()  	LLSD items_llsd; -    typedef std::map<LLUUID, uuid_vec_t> requests_by_fodlers_t; -    requests_by_fodlers_t requests; +    typedef std::map<LLUUID, uuid_vec_t> requests_by_folders_t; +    requests_by_folders_t requests;  	for (uuid_vec_t::const_iterator it = mIDs.begin(); it < mIDs.end(); ++it)  	{          LLViewerInventoryItem* item = gInventory.getItem(*it); @@ -335,12 +335,19 @@ void LLInventoryFetchItemsObserver::startFetch()      if (aisv3)      {          const S32 MAX_INDIVIDUAL_REQUESTS = 10; -        for (requests_by_fodlers_t::value_type &folder : requests) +        for (requests_by_folders_t::value_type &folder : requests)          { +            LLViewerInventoryCategory* cat = gInventory.getCategory(folder.first);              if (folder.second.size() > MAX_INDIVIDUAL_REQUESTS)              {                  // requesting one by one will take a while                  // do whole folder +                if (cat) +                { +                    // Either drop version or use scheduleFolderFetch to force-fetch +                    // otherwise background fetch will ignore folders with set version +                    cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN); +                }                  LLInventoryModelBackgroundFetch::getInstance()->start(folder.first);              }              else @@ -355,7 +362,8 @@ void LLInventoryFetchItemsObserver::startFetch()                      }                      else if (cat->getViewerDescendentCount() <= folder.second.size())                      { -                        // start fetching whole folder since we need all items +                        // Start fetching whole folder since we need all items +                        // Drop version or use scheduleFolderFetch                          cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN);                          cat->fetch(); | 
