diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp index c7528201dc7f816cd0a671208a47688a3cc584f2..365e73627dd9245251a5e9e10cfd6640e2c11b39 100644 --- a/indra/newview/llaisapi.cpp +++ b/indra/newview/llaisapi.cpp @@ -978,12 +978,18 @@ void AISAPI::InvokeAISCommandCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t ht ids.emplace(result["item_id"]); } break; + case COPYINVENTORY: case CREATEINVENTORY: { AISUpdate::parseUUIDArray(result, "_created_categories", ids); AISUpdate::parseUUIDArray(result, "_created_items", ids); } break; + case UPDATECATEGORY: + { + AISUpdate::parseUUIDArray(result, "_updated_categories", ids); + } + break; default: break; } @@ -1367,6 +1373,11 @@ void AISUpdate::parseCategory(const LLSD& category_map, S32 depth) { LL_WARNS() << "Got stale folder, known: " << curr_cat->getVersion() << ", received: " << version << LL_ENDL; + if( version < curr_cat->getVersion() ) + { + curr_cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN); + curr_cat->fetch(); + } return; } diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp index d5a530e2f4fd3bc732c5377f24cd218ab37360c3..2b296aef8de91e8422e28d88f014f4c8f4c5b2d4 100644 --- a/indra/newview/llattachmentsmgr.cpp +++ b/indra/newview/llattachmentsmgr.cpp @@ -195,7 +195,7 @@ void LLAttachmentsMgr::requestAttachments(attachments_vec_t& attachment_requests // For unknown reasons, requesting many attachments at once causes // frequent server-side failures. Here we're limiting the number // of attachments requested per idle loop. - const S32 max_objects_per_request = 5; + const S32 max_objects_per_request = 1; S32 obj_count = llmin((S32)attachment_requests.size(),max_objects_per_request); if (obj_count == 0) { diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 09e64c61db4e22dd26f8042593857f3b61ffde09..cfbed2267c9784e9075a612d9a01f24901d26175 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1561,13 +1561,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item, U32 mask) LLUUID new_parent_id = item->getParentUUID(); bool update_parent_on_server = false; -// if (new_parent_id.isNull() && !LLApp::isExiting()) -// [SL:KB] - Patch: Appearance-Misc | Checked: Catznip-6.4 - // The problem seems to be the 'LogoutReply' message so don't reparent anything to the LNF folder - // as soon as we've sent out the log out request (since the quitting state is only set >after< we - // start processing the logout response) - if ( (new_parent_id.isNull()) && (!LLAppViewer::instance()->logoutRequestSent()) && (!LLApp::isExiting()) ) -// [/SL:KB] + if (new_parent_id.isNull() && !LLApp::isExiting()) { if (old_parent_id.isNull()) { @@ -1898,10 +1892,12 @@ void LLInventoryModel::changeItemParent(LLViewerInventoryItem* item, << " from " << make_inventory_info(item->getParentUUID()) << " to " << make_inventory_info(new_parent_id) << LL_ENDL; - LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(), -1); - accountForUpdate(old_folder); - LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1, false); - accountForUpdate(new_folder); + LLInventoryModel::update_list_t update; + LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1); + update.push_back(old_folder); + LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1); + update.push_back(new_folder); + accountForUpdate(update); LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); new_item->setParent(new_parent_id); @@ -1934,10 +1930,12 @@ void LLInventoryModel::changeCategoryParent(LLViewerInventoryCategory* cat, << " from " << make_inventory_info(cat->getParentUUID()) << " to " << make_inventory_info(new_parent_id) << LL_ENDL; + LLInventoryModel::update_list_t update; LLInventoryModel::LLCategoryUpdate old_folder(cat->getParentUUID(), -1); - accountForUpdate(old_folder); - LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1, false); - accountForUpdate(new_folder); + update.push_back(old_folder); + LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1); + update.push_back(new_folder); + accountForUpdate(update); LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat); new_cat->setParent(new_parent_id); @@ -2709,10 +2707,7 @@ void LLInventoryModel::accountForUpdate(const LLCategoryUpdate& update) const { descendents_actual += update.mDescendentDelta; cat->setDescendentCount(descendents_actual); - if (update.mChangeVersion) - { - cat->setVersion(++version); - } + cat->setVersion(++version); LL_DEBUGS(LOG_INV) << "accounted: '" << cat->getName() << "' " << version << " with " << descendents_actual << " descendents." << LL_ENDL; @@ -2740,7 +2735,7 @@ void LLInventoryModel::accountForUpdate(const LLCategoryUpdate& update) const } void LLInventoryModel::accountForUpdate( - const LLInventoryModel::update_list_t& update) const + const LLInventoryModel::update_list_t& update) { update_list_t::const_iterator it = update.begin(); update_list_t::const_iterator end = update.end(); @@ -2751,7 +2746,7 @@ void LLInventoryModel::accountForUpdate( } void LLInventoryModel::accountForUpdate( - const LLInventoryModel::update_map_t& update) const + const LLInventoryModel::update_map_t& update) { LLCategoryUpdate up; update_map_t::const_iterator it = update.begin(); diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 2f7bf3277343e3690ea2447a3f762133614bac8a..7c2570da7f788c0c7f3231276c8b2dbe33ed9022 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -531,14 +531,12 @@ class LLInventoryModel // Represents the number of items added or removed from a category. struct LLCategoryUpdate { - LLCategoryUpdate() : mDescendentDelta(0), mChangeVersion(true) {} - LLCategoryUpdate(const LLUUID& category_id, S32 delta, bool change_version = true) : + LLCategoryUpdate() : mDescendentDelta(0) {} + LLCategoryUpdate(const LLUUID& category_id, S32 delta) : mCategoryID(category_id), - mDescendentDelta(delta), - mChangeVersion(change_version) {} + mDescendentDelta(delta) {} LLUUID mCategoryID; S32 mDescendentDelta; - bool mChangeVersion; }; typedef std::vector<LLCategoryUpdate> update_list_t; @@ -556,8 +554,8 @@ class LLInventoryModel // Call when there are category updates. Call them *before* the // actual update so the method can do descendent accounting correctly. void accountForUpdate(const LLCategoryUpdate& update) const; - void accountForUpdate(const update_list_t& updates) const; - void accountForUpdate(const update_map_t& updates) const; + void accountForUpdate(const update_list_t& updates); + void accountForUpdate(const update_map_t& updates); // Return (yes/no/maybe) child status of category children. EHasChildren categoryHasChildren(const LLUUID& cat_id) const;