summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/llappearancemgr.cpp81
-rwxr-xr-xindra/newview/llappearancemgr.h7
-rwxr-xr-xindra/newview/llfloatersidepanelcontainer.cpp24
-rwxr-xr-xindra/newview/llpaneleditwearable.cpp28
-rw-r--r--indra/newview/llpaneleditwearable.h12
-rwxr-xr-xindra/newview/llviewerinventory.h4
-rwxr-xr-xindra/newview/llviewerregion.cpp5
7 files changed, 126 insertions, 35 deletions
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 2e71f15a78..f56ae7caf1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -211,7 +211,7 @@ public:
void addItem(const LLUUID& item_id)
{
LL_DEBUGS("Avatar") << "item_id " << item_id << llendl;
-
+
if (!requestOperation(item_id))
{
LL_DEBUGS("Avatar") << "item_id " << item_id << " requestOperation false, skipping" << llendl;
@@ -1692,7 +1692,7 @@ void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_lin
gInventory.purgeObject(item->getUUID());
}
#else
- gInventory.purgeObject(item->getUUID());
+ gInventory.purgeObject(item->getUUID());
}
#endif
}
@@ -3083,7 +3083,7 @@ public:
{
llwarns << "giving up after too many retries" << llendl;
}
- }
+ }
void dumpContents(const std::string outprefix, const LLSD& content)
{
@@ -3148,6 +3148,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 1a1ca1ca7d..b35504eb1f 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -141,7 +141,7 @@ public:
// Find COF entries referencing the given item.
LLInventoryModel::item_array_t findCOFItemLinks(const LLUUID& item_id);
-
+
// Remove COF entries
void removeCOFItemLinks(const LLUUID& item_id);
void removeCOFLinksOfType(LLWearableType::EType type);
@@ -197,6 +197,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/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index 02150819a0..ce5ea66471 100755
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -59,30 +59,22 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
void LLFloaterSidePanelContainer::onClickCloseBtn()
{
- llinfos << "close clicked" << llendl;
-
LLPanelOutfitEdit* panel_outfit_edit =
dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
- if (panel_outfit_edit && panel_outfit_edit->getVisible())
+ if (panel_outfit_edit)
{
LLFloater *parent = gFloaterView->getParentFloater(panel_outfit_edit);
- if (parent == this)
+ if (parent == this )
{
- LLSidepanelAppearance* panel_appearance =
- dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
- panel_appearance->showOutfitsInventoryPanel();
+ LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
+ if ( panel_appearance )
+ {
+ panel_appearance->getWearable()->onClose();
+ panel_appearance->showOutfitsInventoryPanel();
+ }
}
}
- if ( panel_outfit_edit )
- {
- LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
- if ( panel_appearance )
- {
- panel_appearance->getWearable()->onClose();
- panel_appearance->showOutfitsInventoryPanel();
- }
- }
LLFloater::onClickCloseBtn();
}
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 52b5481976..a49bbcd924 100755
--- 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"
@@ -882,8 +883,8 @@ void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_c
//static
void LLPanelEditWearable::onBackButtonClicked(void* userdata)
-{
- LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata;
+{
+ LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata;
if ( panel->isDirty() )
{
LLAppearanceMgr::instance().setOutfitDirty( true );
@@ -1045,6 +1046,11 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
}
}
+void LLPanelEditWearable::incrementCofVersionLegacy()
+{
+
+}
+
void LLPanelEditWearable::saveChanges(bool force_save_as)
{
if (!mWearablePtr || !isDirty())
@@ -1073,10 +1079,10 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
if (force_save_as)
{
- // the name of the wearable has changed, re-save wearable with new name
- LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID());
+ // 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, description, FALSE);
- mNameEditor->setText(mWearableItem->getName());
+ mNameEditor->setText(mWearableItem->getName());
}
else
{
@@ -1096,8 +1102,18 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
// Remove old link
gInventory.purgeObject(link_item->getUUID());
}
- gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
+ 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/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 812b3b2739..6fb0fd0153 100755
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -211,7 +211,7 @@ public:
// Returns true if a fetch was issued.
bool fetch();
- // used to help make cacheing more robust - for example, if
+ // used to help make caching more robust - for example, if
// someone is getting 4 packets but logs out after 3. the viewer
// may never know the cache is wrong.
enum { DESCENDENT_COUNT_UNKNOWN = -1 };
@@ -219,7 +219,7 @@ public:
void setDescendentCount(S32 descendents) { mDescendentCount = descendents; }
// file handling on the viewer. These are not meant for anything
- // other than cacheing.
+ // other than caching.
bool exportFileLocal(LLFILE* fp) const;
bool importFileLocal(LLFILE* fp);
void determineFolderType();
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index d60ec04578..684c660e90 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1534,6 +1534,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
capabilityNames.append("FetchLibDescendents2");
capabilityNames.append("FetchInventory2");
capabilityNames.append("FetchInventoryDescendents2");
+ capabilityNames.append("IncrementCOFVersion");
}
capabilityNames.append("GetDisplayNames");
@@ -1547,7 +1548,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
capabilityNames.append("LandResources");
capabilityNames.append("MapLayer");
capabilityNames.append("MapLayerGod");
- capabilityNames.append("MeshUploadFlag");
+ capabilityNames.append("MeshUploadFlag");
capabilityNames.append("NavMeshGenerationStatus");
capabilityNames.append("NewFileAgentInventory");
capabilityNames.append("ObjectMedia");
@@ -1587,7 +1588,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
capabilityNames.append("ViewerMetrics");
capabilityNames.append("ViewerStartAuction");
capabilityNames.append("ViewerStats");
-
+
// Please add new capabilities alphabetically to reduce
// merge conflicts.
}