diff options
| -rwxr-xr-x | indra/newview/llinventorybridge.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llinventoryfunctions.cpp | 5 | ||||
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.cpp | 27 | 
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;  } | 
