From 056015963290e47e03972e17ce6d603f8f940fe3 Mon Sep 17 00:00:00 2001 From: Seth ProductEngine Date: Mon, 22 Aug 2011 23:41:54 +0300 Subject: SH-2171 ADDITIONAL FIX Added transaction ID to object weights requests to avoid updating the floater upon outdated or mixed up replies arrival. --- indra/newview/llaccountingcostmanager.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'indra/newview/llaccountingcostmanager.cpp') diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index 0669bdfffa..3717344aef 100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp @@ -41,8 +41,13 @@ public: : mObjectIDs( objectIDs ), mObserverHandle( observer_handle ) { + LLAccountingCostObserver* observer = mObserverHandle.get(); + if (observer) + { + mTransactionID = observer->getTransactionID(); + } } - + void clearPendingRequests ( void ) { for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter ) @@ -57,7 +62,7 @@ public: clearPendingRequests(); LLAccountingCostObserver* observer = mObserverHandle.get(); - if (observer) + if (observer && observer->getTransactionID() == mTransactionID) { observer->setErrorStatus(statusNum, reason); } @@ -86,7 +91,7 @@ public: SelectionCost selectionCost( /*transactionID,*/ physicsCost, networkCost, simulationCost ); LLAccountingCostObserver* observer = mObserverHandle.get(); - if (observer) + if (observer && observer->getTransactionID() == mTransactionID) { observer->onWeightsUpdate(selectionCost); } @@ -99,6 +104,9 @@ private: //List of posted objects LLSD mObjectIDs; + // Current request ID + LLUUID mTransactionID; + // Cost update observer handle LLHandle mObserverHandle; }; -- cgit v1.2.3