diff options
Diffstat (limited to 'indra')
-rwxr-xr-x | indra/newview/app_settings/logcontrol.xml | 2 | ||||
-rwxr-xr-x | indra/newview/llappearancemgr.cpp | 71 | ||||
-rwxr-xr-x[-rw-r--r--] | indra/newview/llviewerinventory.h | 21 |
3 files changed, 45 insertions, 49 deletions
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index 64122bbb6c..1259039010 100755 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -42,8 +42,8 @@ </array> <key>tags</key> <array> - <!-- sample entry for debugging specific items <string>Avatar</string> + <!-- sample entry for debugging specific items <string>Voice</string> --> </array> diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 98a8097a1e..af276e55c3 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -155,37 +155,6 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id, const std::string } } -// Shim between inventory callback and boost function -typedef boost::function<void(const LLUUID&)> inventory_func_type; - -class LLBoostFuncInventoryCallback: public LLInventoryCallback -{ -public: - - LLBoostFuncInventoryCallback(const inventory_func_type& func): - mFunc(func) - { - } - - void fire(const LLUUID& item_id) - { - mFunc(item_id); - } - -private: - inventory_func_type mFunc; -}; - -LLPointer<LLInventoryCallback> make_inventory_func_callback(const inventory_func_type& func) -{ - return new LLBoostFuncInventoryCallback(func); -} - -void report_fire(const LLUUID& item_id) -{ - llinfos << item_id << llendl; -} - void no_op() {} class LLCallAfterInventoryBatchMgr: public LLEventTimer @@ -195,8 +164,7 @@ public: const std::string& phase_name, nullary_func_t on_completion_func, nullary_func_t on_failure_func = no_op, - F32 check_period = 5.0, - F32 retry_after = 10.0, + F32 retry_after = 15.0, S32 max_retries = 2 ): mDstCatID(dst_cat_id), @@ -209,7 +177,7 @@ public: mFailCount(0), mCompletionOrFailureCalled(false), mRetryCount(0), - LLEventTimer(check_period) + LLEventTimer(retry_after) { if (!mTrackingPhase.empty()) { @@ -261,17 +229,20 @@ public: virtual void requestOperation(LLViewerInventoryItem *item) = 0; - void onOp(const LLUUID& src_id, const LLUUID& dst_id) + void onOp(const LLUUID& src_id, const LLUUID& dst_id, LLTimer timestamp) { - LL_DEBUGS("Avatar") << "op done, src_id " << src_id << " dst_id " << dst_id << " after " << mWaitTimes[src_id].getElapsedTimeF32() << " seconds" << llendl; mPendingRequests--; - F32 wait_time = mWaitTimes[src_id].getElapsedTimeF32(); - mTimeStats.push(wait_time); - mWaitTimes.erase(src_id); - if (mCompletionOrFailureCalled) + F32 elapsed = timestamp.getElapsedTimeF32(); + LL_DEBUGS("Avatar") << "op done, src_id " << src_id << " dst_id " << dst_id << " after " << elapsed << " seconds" << llendl; + if (mWaitTimes.find(src_id) == mWaitTimes.end()) { - llinfos << "late-completing operation, src_id " << src_id << "dst_id " << dst_id << llendl; + // No longer waiting for this item - either serviced + // already or gave up after too many retries. + llwarns << "duplicate or late operation, src_id " << src_id << "dst_id " << dst_id + << " elapsed " << elapsed << " after end " << (S32) mCompletionOrFailureCalled << llendl; } + mTimeStats.push(elapsed); + mWaitTimes.erase(src_id); if (mWaitTimes.empty() && !mCompletionOrFailureCalled) { onCompletionOrFailure(); @@ -401,9 +372,11 @@ public: const LLUUID& dst_cat_id, const std::string& phase_name, nullary_func_t on_completion_func, - nullary_func_t on_failure_func = no_op + nullary_func_t on_failure_func = no_op, + F32 retry_after = 15.0, + S32 max_retries = 2 ): - LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func) + LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries) { addItems(src_items); } @@ -416,7 +389,7 @@ public: item->getUUID(), mDstCatID, std::string(), - make_inventory_func_callback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1)) + new LLBoostFuncInventoryCallback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer())) ); } }; @@ -428,9 +401,11 @@ public: const LLUUID& dst_cat_id, const std::string& phase_name, nullary_func_t on_completion_func, - nullary_func_t on_failure_func = no_op + nullary_func_t on_failure_func = no_op, + F32 retry_after = 15.0, + S32 max_retries = 2 ): - LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func) + LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries) { addItems(src_items); } @@ -443,8 +418,8 @@ public: item->getName(), item->LLInventoryItem::getDescription(), LLAssetType::AT_LINK, - make_inventory_func_callback( - boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1))); + new LLBoostFuncInventoryCallback( + boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer()))); } }; diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 7822ef4da6..e2793ba105 100644..100755 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -297,6 +297,27 @@ private: LLUUID mTargetLandmarkId; }; +// Shim between inventory callback and boost function/callable +typedef boost::function<void(const LLUUID&)> inventory_func_type; + +class LLBoostFuncInventoryCallback: public LLInventoryCallback +{ +public: + + LLBoostFuncInventoryCallback(const inventory_func_type& func): + mFunc(func) + { + } + + void fire(const LLUUID& item_id) + { + mFunc(item_id); + } + +private: + inventory_func_type mFunc; +}; + // misc functions //void inventory_reliable_callback(void**, S32 status); |