diff options
| author | Mnikolenko Productengine <mnikolenko@productengine.com> | 2016-09-05 17:32:50 +0300 | 
|---|---|---|
| committer | Mnikolenko Productengine <mnikolenko@productengine.com> | 2016-09-05 17:32:50 +0300 | 
| commit | fc17f62335d728e79bf9f18f76482fa3bf45b34e (patch) | |
| tree | a446641537d0dd03d0bc95b0e87afd6ace73afcb /indra | |
| parent | 74ec1116a22f325d0c726c109e0664fda566a7a6 (diff) | |
MAINT-6685 [VOB] Outfit Image from an Outfit Gallery disappears after editing outfit
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llappearancemgr.cpp | 24 | ||||
| -rw-r--r-- | indra/newview/llappearancemgr.h | 5 | 
2 files changed, 28 insertions, 1 deletions
| diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 0ea206186c..1f8adbcb95 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3113,6 +3113,14 @@ void appearance_mgr_update_dirty_state()  {  	if (LLAppearanceMgr::instanceExists())  	{ +		LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance(); +		LLUUID image_id = app_mgr.getOutfitImage(); +		if(image_id.notNull()) +		{ +			LLPointer<LLInventoryCallback> cb = NULL; +			link_inventory_object(app_mgr.getBaseOutfitUUID(), image_id, cb); +		} +  		LLAppearanceMgr::getInstance()->updateIsDirty();  		LLAppearanceMgr::getInstance()->setOutfitLocked(false);  		gAgentWearables.notifyLoadingFinished(); @@ -3122,7 +3130,21 @@ void appearance_mgr_update_dirty_state()  void update_base_outfit_after_ordering()  {  	LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance(); -	 +	LLInventoryModel::cat_array_t sub_cat_array; +	LLInventoryModel::item_array_t outfit_item_array; +	gInventory.collectDescendents(app_mgr.getBaseOutfitUUID(), +								sub_cat_array, +								outfit_item_array, +								LLInventoryModel::EXCLUDE_TRASH); +	BOOST_FOREACH(LLViewerInventoryItem* outfit_item, outfit_item_array) +	{ +		LLViewerInventoryItem* linked_item = outfit_item->getLinkedItem(); +		if (linked_item != NULL && linked_item->getActualType() == LLAssetType::AT_TEXTURE) +		{ +			app_mgr.setOutfitImage(linked_item->getLinkedUUID()); +		} +	} +  	LLPointer<LLInventoryCallback> dirty_state_updater =  		new LLBoostFuncInventoryCallback(no_op_inventory_func, appearance_mgr_update_dirty_state); diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 7dbb86d7f2..2e570b9188 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -185,6 +185,9 @@ public:  	void wearBaseOutfit(); +	void setOutfitImage(const LLUUID& image_id) {mCOFImageID = image_id;} +	LLUUID getOutfitImage() {return mCOFImageID;} +  	// Overrides the base outfit with the content from COF  	// @return false if there is no base outfit  	bool updateBaseOutfit(); @@ -269,6 +272,8 @@ private:  	LLTimer mInFlightTimer;  	static bool mActive; +	LLUUID mCOFImageID; +  	std::auto_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer;  	// Set of temp attachment UUIDs that should be removed | 
