From 34d3d02101e1838a4d8b875850a12867866a2935 Mon Sep 17 00:00:00 2001 From: Denis Serdjuk Date: Fri, 27 Nov 2009 16:07:14 +0200 Subject: fixed bug EXT-2785 All gestures appear in Gestures window only after inventory/gestures has been invoked Cause: Specific implementation of LLInventoryCompletionObserver. It call done() on startup before all items had been loaded. Changes: LLGesturemanager will be loaded appropriated inventory item itself. LLGestureInventoryfetchObserver has been removed. --HG-- branch : product-engine --- indra/newview/llgesturemgr.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'indra/newview/llgesturemgr.cpp') diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 77a2cbcfca..18ff53c127 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -73,6 +73,7 @@ LLGestureManager::LLGestureManager() mActive(), mLoadingCount(0) { + mRetryIfMissing = true; gInventory.addObserver(this); } @@ -984,7 +985,9 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs, else { // Watch this item and set gesture name when item exists in inventory - self.watchItem(item_id); + item_ref_t ids; + ids.push_back(item_id); + self.fetchItems(ids); } self.mActive[item_id] = gesture; @@ -1177,6 +1180,7 @@ void LLGestureManager::getItemIDs(std::vector* ids) void LLGestureManager::done() { + bool notify = false; for(item_map_t::iterator it = mActive.begin(); it != mActive.end(); ++it) { if(it->second && it->second->mName.empty()) @@ -1185,10 +1189,14 @@ void LLGestureManager::done() if(item) { it->second->mName = item->getName(); + notify = true; } } } - notifyObservers(); + if(notify) + { + notifyObservers(); + } } // static -- cgit v1.2.3