summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2015-04-10 17:37:11 -0700
committerMerov Linden <merov@lindenlab.com>2015-04-10 17:37:11 -0700
commita9c3681cb5eecc043dab3f5c9dc9d97bc1af1075 (patch)
tree59ca5406c5a934555c6937e716360418bdd0f155
parent8952e8177528fe0eee65916b9e12c3183f15e392 (diff)
DD-381 : Avoid unecessary SLM updates, suppress some update_marketplace_category() that are picked by dirty bit setup
-rwxr-xr-xindra/newview/llinventorybridge.cpp2
-rwxr-xr-xindra/newview/llinventoryfunctions.cpp5
-rwxr-xr-xindra/newview/llmarketplacefunctions.cpp27
3 files changed, 25 insertions, 9 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index b7b2d1b285..df07c06467 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4675,8 +4675,6 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
LLMarketplaceData::instance().activateListing(version_folder_id,false);
}
}
- // Update the listing we moved from anyway
- update_marketplace_category(from_folder_uuid);
}
//
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 123e55a8ee..135b6f2f17 100755
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -1505,11 +1505,6 @@ bool move_item_to_marketplacelistings(LLInventoryItem* inv_item, LLUUID dest_fol
// Reparent the item
gInventory.changeItemParent(viewer_inv_item, dest_folder, true);
}
-
- // Update the modified folders
- update_marketplace_category(src_folder);
- update_marketplace_category(dest_folder);
- gInventory.notifyObservers();
}
else
{
diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp
index 5d8bab5833..de3bd35de0 100755
--- a/indra/newview/llmarketplacefunctions.cpp
+++ b/indra/newview/llmarketplacefunctions.cpp
@@ -1507,6 +1507,12 @@ bool LLMarketplaceData::activateListing(const LLUUID& folder_id, bool activate)
return false;
}
+ if (getActivationState(listing_uuid) == activate)
+ {
+ // If activation state is unchanged, no point spamming SLM with an update
+ return true;
+ }
+
LLUUID version_uuid = getVersionFolder(listing_uuid);
// Also update the count on hand
@@ -1530,6 +1536,12 @@ bool LLMarketplaceData::setVersionFolder(const LLUUID& folder_id, const LLUUID&
return false;
}
+ if (getVersionFolder(listing_uuid) == version_id)
+ {
+ // If version folder is unchanged, no point spamming SLM with an update
+ return true;
+ }
+
// Note: if the version_id is cleared, we need to unlist the listing, otherwise, state unchanged
bool is_listed = (version_id.isNull() ? false : getActivationState(listing_uuid));
@@ -1554,16 +1566,27 @@ bool LLMarketplaceData::updateCountOnHand(const LLUUID& folder_id)
return false;
}
+ // Compute the new count on hand
+ S32 count = compute_stock_count(folder_id);
+
+ if (getCountOnHand(listing_uuid) == count)
+ {
+ // If count on hand is unchanged, no point spamming SLM with an update
+ return true;
+ }
+
// Get the unchanged values
bool is_listed = getActivationState(listing_uuid);
LLUUID version_uuid = getVersionFolder(listing_uuid);
- // Compute the new count on hand
- S32 count = compute_stock_count(folder_id);
// Post the listing update request to SLM
updateSLMListing(listing_uuid, listing_id, version_uuid, is_listed, count);
+ // Force the local value as it prevents spamming (count update may occur in burst when restocking)
+ // Note that if SLM has a good reason to return a different value, it'll be updated by the responder
+ setCountOnHand(listing_uuid, count, false);
+
return true;
}