diff options
author | Seth ProductEngine <slitovchuk@productengine.com> | 2011-04-12 03:00:05 +0300 |
---|---|---|
committer | Seth ProductEngine <slitovchuk@productengine.com> | 2011-04-12 03:00:05 +0300 |
commit | 67f33bff1b078e10149151af32e62ea88e7484c3 (patch) | |
tree | 8f57c28024527917fa695c4779ca4f1d3f8435b3 /indra/newview | |
parent | fa1827fa32f5dc046b17cde1ddbac8316f061793 (diff) |
STORM-1042 FIXED Fixed the inventory observers of newly added items.
The problem was caused by an outdated message name stored in LLInventoryObserver::mMessageName and not updated properly in LLInventoryModel::notifyObservers().
The message name used in LLInventoryAddedObserver::changed() was the name of the message most recently passed by LLInventoryModel::notifyObservers(), instead of the name of the latest actually received message. Using the most recent message name in this case fixed the problem.
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llinventorymodel.cpp | 19 | ||||
-rw-r--r-- | indra/newview/llinventorymodel.h | 5 | ||||
-rw-r--r-- | indra/newview/llinventorymodelbackgroundfetch.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llinventoryobserver.cpp | 11 | ||||
-rw-r--r-- | indra/newview/llinventoryobserver.h | 1 |
5 files changed, 11 insertions, 31 deletions
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 53835f0166..b1975c7261 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1059,12 +1059,11 @@ void LLInventoryModel::idleNotifyObservers() { return; } - notifyObservers(""); + notifyObservers(); } // Call this method when it's time to update everyone on a new state. -// The optional argument 'service_name' is used by Agent Inventory Service [DEV-20328] -void LLInventoryModel::notifyObservers(const std::string service_name) +void LLInventoryModel::notifyObservers() { if (mIsNotifyObservers) { @@ -1081,15 +1080,7 @@ void LLInventoryModel::notifyObservers(const std::string service_name) { LLInventoryObserver* observer = *iter; - if (service_name.empty()) - { - observer->changed(mModifyMask); - } - else - { - observer->mMessageName = service_name; - observer->changed(mModifyMask); - } + observer->changed(mModifyMask); // safe way to increment since changed may delete entries! (@!##%@!@&*!) iter = mObservers.upper_bound(observer); @@ -1187,7 +1178,7 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) { changes |= gInventory.updateItem(*it); } - gInventory.notifyObservers("fetchinventory"); + gInventory.notifyObservers(); gViewerWindow->getWindow()->decBusyCount(); } @@ -1196,7 +1187,7 @@ void LLInventoryModel::fetchInventoryResponder::error(U32 status, const std::str { llinfos << "fetchInventory::error " << status << ": " << reason << llendl; - gInventory.notifyObservers("fetchinventory"); + gInventory.notifyObservers(); } bool LLInventoryModel::fetchDescendentsOf(const LLUUID& folder_id) const diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index f6728fd575..15da09990f 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -425,9 +425,8 @@ public: // has been indicated. void idleNotifyObservers(); - // Call to explicitly update everyone on a new state. The optional argument - // 'service_name' is used by Agent Inventory Service [DEV-20328] - void notifyObservers(const std::string service_name=""); + // Call to explicitly update everyone on a new state. + void notifyObservers(); // Allows outsiders to tell the inventory if something has // been changed 'under the hood', but outside the control of the diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index e31360fcbc..7b1ff102e7 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -388,7 +388,7 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content) titem->setParent(lost_uuid); titem->updateParentOnServer(FALSE); gInventory.updateItem(titem); - gInventory.notifyObservers("fetchDescendents"); + gInventory.notifyObservers(); } } @@ -464,7 +464,7 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content) fetcher->setAllFoldersFetched(); } - gInventory.notifyObservers("fetchDescendents"); + gInventory.notifyObservers(); } // If we get back an error (not found, etc...), handle it here. @@ -496,7 +496,7 @@ void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::str fetcher->setAllFoldersFetched(); } } - gInventory.notifyObservers("fetchDescendents"); + gInventory.notifyObservers(); } BOOL LLInventoryModelFetchDescendentsResponder::getIsRecursive(const LLUUID& cat_id) const diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 0fd4b2bee5..6bf19e346d 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -572,16 +572,7 @@ void LLInventoryAddedObserver::changed(U32 mask) // the network, figure out which item was updated. LLMessageSystem* msg = gMessageSystem; - std::string msg_name; - if (mMessageName.empty()) - { - msg_name = msg->getMessageName(); - } - else - { - msg_name = mMessageName; - } - + std::string msg_name = msg->getMessageName(); if (msg_name.empty()) { return; diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index f2a2049a51..2d9021961e 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -63,7 +63,6 @@ public: LLInventoryObserver(); virtual ~LLInventoryObserver(); virtual void changed(U32 mask) = 0; - std::string mMessageName; // used by Agent Inventory Service only. [DEV-20328] }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |