diff options
| -rw-r--r-- | indra/newview/llagentwearables.cpp | 1 | ||||
| -rwxr-xr-x | indra/newview/llagentwearables.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llappearancemgr.cpp | 6 | ||||
| -rwxr-xr-x | indra/newview/llappearancemgr.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewerinventory.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llvoavatar.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llvoavatarself.cpp | 16 | ||||
| -rwxr-xr-x | indra/newview/llvoavatarself.h | 1 | 
8 files changed, 30 insertions, 2 deletions
| diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index b4c3e33e0e..80c8364223 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1897,6 +1897,7 @@ bool LLAgentWearables::changeInProgress() const  void LLAgentWearables::notifyLoadingStarted()  {  	mCOFChangeInProgress = true; +	mCOFChangeTimer.reset();  	mLoadingStartedSignal();  } diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 5be4648636..0adf545aab 100755 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -77,6 +77,7 @@ public:  	BOOL			isWearableCopyable(LLWearableType::EType type, U32 index /*= 0*/) const;  	BOOL			areWearablesLoaded() const;  	bool			isCOFChangeInProgress() const { return mCOFChangeInProgress; } +	F32				getCOFChangeTime() const { return mCOFChangeTimer.getElapsedTimeF32(); }  	void			updateWearablesLoaded();  	void			checkWearablesLoaded() const;  	bool			canMoveWearable(const LLUUID& item_id, bool closer_to_body) const; @@ -237,6 +238,7 @@ private:  	 * True if agent's outfit is being changed now.  	 */  	BOOL			mCOFChangeInProgress; +	LLTimer			mCOFChangeTimer;  	//--------------------------------------------------------------------------------  	// Support classes diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 83ad06a3c7..30b6169b46 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -547,6 +547,7 @@ public:  	bool isMostRecent();  	void handleLateArrivals();  	void resetTime(F32 timeout); +	static S32 countActive() { return sActiveHoldingPatterns.size(); }  private:  	found_list_t mFoundList; @@ -1836,6 +1837,11 @@ void LLAppearanceMgr::updateAgentWearables(LLWearableHoldingPattern* holder, boo  	}  } +S32 LLAppearanceMgr::countActiveHoldingPatterns() +{ +	return LLWearableHoldingPattern::countActive(); +} +  static void remove_non_link_items(LLInventoryModel::item_array_t &items)  {  	LLInventoryModel::item_array_t pruned_items; diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 246401ae85..3fb470ef14 100755 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -120,6 +120,8 @@ public:  	void updateAgentWearables(LLWearableHoldingPattern* holder, bool append); +	S32 countActiveHoldingPatterns(); +  	// For debugging - could be moved elsewhere.  	void dumpCat(const LLUUID& cat_id, const std::string& msg);  	void dumpItemArray(const LLInventoryModel::item_array_t& items, const std::string& msg); diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 62bcfd20a7..465a49d004 100755 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1463,7 +1463,7 @@ void update_inventory_item(  			obj->packUpdateMessage(msg, updates);  			gAgent.sendReliableMessage(); -			gInventory.onItemUpdated(item_id, updates,false); +			gInventory.onItemUpdated(item_id, updates,true);  			if (cb)  			{  				cb->fire(item_id); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 8e7bed39c4..6df5fab42b 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -6023,7 +6023,7 @@ void LLVOAvatar::startPhase(const std::string& phase_name)  			return;  		}  	} -	LL_DEBUGS("Avatar") << "started phase " << phase_name << llendl; +	LL_DEBUGS("Avatar") << avString() << " started phase " << phase_name << llendl;  	getPhases().startPhase(phase_name);  } diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 52c44e6e1b..5b6fcc5d27 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -234,6 +234,22 @@ void LLVOAvatarSelf::initInstance()  	//doPeriodically(output_self_av_texture_diagnostics, 30.0);  	doPeriodically(update_avatar_rez_metrics, 5.0);  	doPeriodically(check_for_unsupported_baked_appearance, 120.0); +	doPeriodically(boost::bind(&LLVOAvatarSelf::checkStuckAppearance, this), 30.0); +} + +bool LLVOAvatarSelf::checkStuckAppearance() +{ +	if (gAgentWearables.isCOFChangeInProgress()) +	{ +		LL_DEBUGS("Avatar") << "checking for stuck appearance" << llendl; +		F32 change_time = gAgentWearables.getCOFChangeTime(); +		LL_DEBUGS("Avatar") << "change in progress for " << change_time << " seconds" << llendl; +		S32 active_hp = LLAppearanceMgr::instance().countActiveHoldingPatterns(); +		LL_DEBUGS("Avatar") << "active holding patterns " << active_hp << " seconds" << llendl; +	} + +	// Return false to continue running check periodically. +	return LLApp::isExiting();  }  // virtual diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 3b7b6bac64..e8b9a25327 100755 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -138,6 +138,7 @@ public:  public:  	/*virtual*/ BOOL 	updateCharacter(LLAgent &agent);  	/*virtual*/ void 	idleUpdateTractorBeam(); +	bool				checkStuckAppearance();  	//--------------------------------------------------------------------  	// Loading state | 
