diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llappearancemgr.cpp | 75 | ||||
| -rwxr-xr-x | indra/newview/llappearancemgr.h | 5 | ||||
| -rw-r--r-- | indra/newview/llpaneleditwearable.cpp | 52 | ||||
| -rw-r--r-- | indra/newview/llpaneleditwearable.h | 12 | ||||
| -rwxr-xr-x | indra/newview/llviewerregion.cpp | 1 | 
5 files changed, 122 insertions, 23 deletions
| diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index f957aadec5..d15c3dd13d 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3038,6 +3038,81 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond  	mLastUpdateRequestCOFVersion = cof_version;  } +class LLIncrementCofVersionResponder : public LLHTTPClient::Responder +{ +public: +	LLIncrementCofVersionResponder() : LLHTTPClient::Responder() +	{ +		mRetryPolicy = new LLAdaptiveRetryPolicy(1.0, 16.0, 2.0, 5); +	} + +	virtual ~LLIncrementCofVersionResponder() +	{ +	} + +	virtual void result(const LLSD &pContent) +	{ +		llinfos << "Successfully incremented agent's COF." << llendl; +		S32 new_version = pContent["category"]["version"].asInteger(); + +		LLAppearanceMgr* app_mgr = LLAppearanceMgr::getInstance(); + +		// cof_version should have increased +		llassert(new_version > app_mgr->mLastUpdateRequestCOFVersion); + +		app_mgr->mLastUpdateRequestCOFVersion = new_version; +	} +	virtual void error(U32 pStatus, const std::string& pReason) +	{ +		llwarns << "While attempting to increment the agent's cof we got an error because '" +			<< pReason << "' [status:" << pStatus << "]" << llendl; +		F32 seconds_to_wait; +		if (mRetryPolicy->shouldRetry(pStatus,seconds_to_wait)) +		{ +			llinfos << "retrying" << llendl; +			doAfterInterval(boost::bind(&LLAppearanceMgr::incrementCofVersion, +										LLAppearanceMgr::getInstance(), +										LLHTTPClient::ResponderPtr(this)), +										seconds_to_wait); +		} +		else +		{ +			llwarns << "giving up after too many retries" << llendl; +		} +	} + +	LLPointer<LLHTTPRetryPolicy> mRetryPolicy; +}; + +void LLAppearanceMgr::incrementCofVersion(LLHTTPClient::ResponderPtr responder_ptr) +{ +	// If we don't have a region, report it as an error +	if (gAgent.getRegion() == NULL) +	{ +		llwarns << "Region not set, cannot request cof_version increment" << llendl; +		return; +	} + +	std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion"); +	if (url.empty()) +	{ +		llwarns << "No cap for IncrementCofVersion." << llendl; +		return; +	} + +	llinfos << "Requesting cof_version be incremented via capability to: " +			<< url << llendl; +	LLSD headers; +	LLSD body = LLSD::emptyMap(); + +	if (!responder_ptr.get()) +	{ +		responder_ptr = LLHTTPClient::ResponderPtr(new LLIncrementCofVersionResponder()); +	} + +	LLHTTPClient::get(url, body, responder_ptr, headers, 30.0f); +} +  void show_created_outfit(LLUUID& folder_id, bool show_panel = true)  {  	if (!LLApp::isRunning()) diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index cb271cda4d..c0d3dd805a 100755 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -187,6 +187,11 @@ public:  	void requestServerAppearanceUpdate(LLCurl::ResponderPtr responder_ptr = NULL); +	void incrementCofVersion(LLHTTPClient::ResponderPtr responder_ptr = NULL); + +	// *HACK Remove this after server side texture baking is deployed on all sims. +	void incrementCofVersionLegacy(); +  protected:  	LLAppearanceMgr();  	~LLAppearanceMgr(); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 786b215fdf..fd41d08102 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -52,6 +52,7 @@  #include "lltexturectrl.h"  #include "lltextureentry.h"  #include "llviewercontrol.h"    // gSavedSettings +#include "llviewerregion.h"  #include "llviewertexturelist.h"  #include "llagentcamera.h"  #include "llmorphview.h" @@ -1042,28 +1043,43 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)          }  } +void LLPanelEditWearable::incrementCofVersionLegacy() +{ + +} +  void LLPanelEditWearable::saveChanges(bool force_save_as)  { -        if (!mWearablePtr || !isDirty()) -        { -                // do nothing if no unsaved changes -                return; -        } +	if (!mWearablePtr || !isDirty()) +	{ +			// do nothing if no unsaved changes +			return; +	} -        U32 index = gAgentWearables.getWearableIndex(mWearablePtr); +	U32 index = gAgentWearables.getWearableIndex(mWearablePtr); -        std::string new_name = mNameEditor->getText(); -        if (force_save_as) -        { -                // the name of the wearable has changed, re-save wearable with new name -                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID()); -                gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, FALSE); -                mNameEditor->setText(mWearableItem->getName()); -        } -        else -        { -                gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name); -        } +	std::string new_name = mNameEditor->getText(); +	if (force_save_as) +	{ +			// the name of the wearable has changed, re-save wearable with new name +			LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID()); +			gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, FALSE); +			mNameEditor->setText(mWearableItem->getName()); +	} +	else +	{ +			gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name); +	} + +	if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion() > 0) +	{ +		LLAppearanceMgr::getInstance()->incrementCofVersion(); +	} +	else +	{ +		// *HACK This should be removed when all regions support the IncrementCOFVersion capability. +		incrementCofVersionLegacy(); +	}  }  void LLPanelEditWearable::revertChanges() diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index ac4344de2e..6533d55f2f 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -78,7 +78,6 @@ public:  	virtual void		setVisible(BOOL visible); -  private:  	typedef std::map<F32, LLViewerVisualParam*> value_map_t; @@ -96,7 +95,7 @@ private:  	void				toggleTypeSpecificControls(LLWearableType::EType type);  	void				updateTypeSpecificControls(LLWearableType::EType type); -	//alpha mask checkboxes +	// alpha mask checkboxes  	void configureAlphaCheckbox(LLAvatarAppearanceDefines::ETextureIndex te, const std::string& name);  	void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te);  	void updateAlphaCheckboxes(); @@ -106,7 +105,7 @@ private:  	// callback for HeightUnits parameter.  	bool changeHeightUnits(const LLSD& new_value); -	// updates current metric and replacemet metric label text +	// updates current metric and replacement metric label text  	void updateMetricLayout(BOOL new_value);  	// updates avatar height label @@ -116,6 +115,9 @@ private:  	void setWearablePanelVisibilityChangeCallback(LLPanel* bodypart_panel); +	// *HACK Remove this when serverside texture baking is available on all regions. +	void incrementCofVersionLegacy(); +  	// the pointer to the wearable we're editing. NULL means we're not editing a wearable.  	LLViewerWearable *mWearablePtr;  	LLViewerInventoryItem* mWearableItem; @@ -130,7 +132,7 @@ private:  	LLTextBox *mTxtAvatarHeight; -	// localized and parametrized strings that used to build avatar_height_label +	// localized and parameterized strings that used to build avatar_height_label  	std::string mMeters;  	std::string mFeet;  	std::string mHeigth; @@ -153,7 +155,7 @@ private:  	LLPanel *mPanelEyes;  	LLPanel *mPanelHair; -	//clothes +	// clothes  	LLPanel *mPanelShirt;  	LLPanel *mPanelPants;  	LLPanel *mPanelShoes; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 0fa87162c4..e40060a364 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1538,6 +1538,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)  		capabilityNames.append("FetchLibDescendents2");  		capabilityNames.append("FetchInventory2");  		capabilityNames.append("FetchInventoryDescendents2"); +		capabilityNames.append("IncrementCOFVersion");  	}  	capabilityNames.append("GetDisplayNames"); | 
