summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2013-04-08 18:18:42 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2013-04-08 18:18:42 -0400
commit2711ba44f69afa3ed1df9fefc0b1403b40f0ec35 (patch)
tree7b3b6b06fba9e82f282558bc7603e65a7faa08b9 /indra
parent4bbcd26941c3be6b83214d0dc45c70f99e474dda (diff)
parenta2a25c9ed5de12cfb8a08844682368dc236a1b42 (diff)
merge
Diffstat (limited to 'indra')
-rw-r--r--indra/llappearance/llavatarappearance.cpp21
-rw-r--r--indra/llappearance/llavatarappearancedefines.h2
-rw-r--r--indra/llcommon/llversionviewer.h2
-rw-r--r--indra/llmessage/llhttpnode.cpp1
-rw-r--r--indra/newview/app_settings/logcontrol.xml2
-rwxr-xr-xindra/newview/llagent.cpp4
-rw-r--r--indra/newview/llagentwearables.cpp52
-rw-r--r--indra/newview/llagentwearables.h2
-rwxr-xr-xindra/newview/llappearancemgr.cpp4
-rw-r--r--indra/newview/llfloatersidepanelcontainer.cpp16
-rw-r--r--indra/newview/llfloatersidepanelcontainer.h2
-rw-r--r--indra/newview/llinspectavatar.cpp5
-rw-r--r--indra/newview/llinventorymodel.cpp3
-rw-r--r--indra/newview/llsidepanelappearance.cpp88
-rw-r--r--indra/newview/llsidepanelappearance.h16
-rw-r--r--indra/newview/llspeakers.cpp5
-rw-r--r--indra/newview/llviewertexlayer.cpp2
-rwxr-xr-xindra/newview/llvoavatar.cpp20
-rwxr-xr-xindra/newview/llvoavatarself.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml13
20 files changed, 179 insertions, 83 deletions
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 2d5744bb5e..3bb759d458 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -464,7 +464,7 @@ void LLAvatarAppearance::computeBodySize()
F32 old_offset = mAvatarOffset.mV[VZ];
- mAvatarOffset.mV[VZ] = getVisualParamWeight(11001);
+ mAvatarOffset.mV[VZ] = getVisualParamWeight(AVATAR_HOVER);
mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -
knee.mV[VZ] * hip_scale.mV[VZ] -
@@ -488,6 +488,25 @@ void LLAvatarAppearance::computeBodySize()
mAvatarOffset.mV[VX] = 0.0f;
mAvatarOffset.mV[VY] = 0.0f;
+ // Certain configurations of avatars can force the overall height (with offset) to go negative.
+ // Enforce a constraint to make sure we don't go below 0.1 meters.
+ // Camera positioning and other things start to break down when your avatar is "walking" while being fully underground
+ if (new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] < 0.1f)
+ {
+ mAvatarOffset.mV[VZ] = -(new_body_size.mV[VZ] - 0.11f); // avoid floating point rounding making the above check continue to fail.
+
+ llassert(new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] >= 0.1f);
+
+ if (mWearableData && isSelf())
+ {
+ LLWearable* shape = mWearableData->getWearable(LLWearableType::WT_SHAPE, 0);
+ if (shape)
+ {
+ shape->setVisualParamWeight(AVATAR_HOVER, mAvatarOffset.mV[VZ], false);
+ }
+ }
+ }
+
if (new_body_size != mBodySize || old_offset != mAvatarOffset.mV[VZ])
{
mBodySize = new_body_size;
diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index 496f85c107..8a1d2c4707 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -41,6 +41,8 @@ extern const S32 SCRATCH_TEX_WIDTH;
extern const S32 SCRATCH_TEX_HEIGHT;
extern const S32 IMPOSTOR_PERIOD;
+static const U32 AVATAR_HOVER = 11001;
+
//--------------------------------------------------------------------
// Enums
//--------------------------------------------------------------------
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index ca8a05511a..ae5e3ecade 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
const S32 LL_VERSION_MAJOR = 3;
const S32 LL_VERSION_MINOR = 5;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_PATCH = 1;
const S32 LL_VERSION_BUILD = 264760;
const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp
index c0c3d0bcbe..5058fdaf51 100644
--- a/indra/llmessage/llhttpnode.cpp
+++ b/indra/llmessage/llhttpnode.cpp
@@ -182,6 +182,7 @@ void LLHTTPNode::options(ResponsePtr response, const LLSD& context) const
LL_DEBUGS("LLHTTPNode") << "context: " << context << LL_ENDL;
// default implementation constructs an url to the documentation.
+ // *TODO: Check for 'Host' header instead of 'host' header?
std::string host(
context[CONTEXT_REQUEST][CONTEXT_HEADERS][HTTP_IN_HEADER_HOST].asString());
if(host.empty())
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index c5561166fc..92a241857e 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
</array>
<key>tags</key>
<array>
- <string>Avatar</string>
<!-- sample entry for debugging specific items
+ <string>Avatar</string>
<string>Voice</string>
-->
</array>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 049aea844c..939d9398b2 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4322,7 +4322,7 @@ void LLAgent::sendAgentSetAppearance()
}
- LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
+ LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
//dumpAvatarTEs( "sendAgentSetAppearance()" );
LLMessageSystem* msg = gMessageSystem;
@@ -4380,7 +4380,7 @@ void LLAgent::sendAgentSetAppearance()
{
dumpSentAppearance(dump_prefix);
}
- LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
+ LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
{
BOOL generate_valid_hash = TRUE;
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 3cee7826fd..c88694ef76 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1124,19 +1124,14 @@ void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback
cb);
}
-void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index, BOOL will_replace)
+void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index)
{
- if (gAgent.isTeen() &&
+ if (gAgent.isTeen() &&
(type == LLWearableType::WT_UNDERSHIRT || type == LLWearableType::WT_UNDERPANTS))
{
// Can't take off underclothing in simple UI mode or on PG accounts
-
- if (getWearableCount(type) < 2 && !will_replace)
- {
- // if there is 0 or 1 undergarment worn, and we're not going to be immediately adding another,
- // we cannot allow the removal for teen accounts
- return;
- }
+ // TODO: enable the removing of a single undershirt/underpants if multiple are worn. - Nyx
+ return;
}
if (getWearableCount(type) == 0)
{
@@ -1244,31 +1239,6 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
{
llinfos << "setWearableOutfit() start" << llendl;
- S32 count = wearables.count();
- llassert(items.count() == count);
- S32 i;
-
- bool has_undershirt = false;
- bool has_underpants = false;
-
- for (i = 0; i < count; i++)
- {
- LLViewerWearable* new_wearable = wearables[i];
- if (new_wearable)
- {
- const LLWearableType::EType type = new_wearable->getType();
- if (type == LLWearableType::WT_UNDERSHIRT)
- {
- has_undershirt = true;
- }
- if (type == LLWearableType::WT_UNDERPANTS)
- {
- has_underpants = true;
- }
- }
- }
-
-
// TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later
if (remove)
{
@@ -1278,17 +1248,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
{
if (LLWearableType::getAssetType((LLWearableType::EType)type) == LLAssetType::AT_CLOTHING)
{
- bool will_replace = false;
- if ((type == LLWearableType::WT_UNDERSHIRT && has_undershirt) ||
- (type == LLWearableType::WT_UNDERPANTS && has_underpants))
- {
- will_replace = true;
- }
- removeWearable((LLWearableType::EType)type, true, 0, will_replace);
+ removeWearable((LLWearableType::EType)type, true, 0);
}
}
}
+ S32 count = wearables.count();
+ llassert(items.count() == count);
+
+ S32 i;
for (i = 0; i < count; i++)
{
LLViewerWearable* new_wearable = wearables[i];
@@ -1518,7 +1486,7 @@ void LLAgentWearables::queryWearableCache()
gAgentAvatarp->outputRezTiming("Fetching textures from cache");
}
- LL_INFOS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL;
+ LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL;
gMessageSystem->sendReliable(gAgent.getRegion()->getHost());
gAgentQueryManager.mNumPendingQueries++;
gAgentQueryManager.mWearablesCacheQueryID++;
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index f2f224a573..5be4648636 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -146,7 +146,7 @@ private:
// Removing wearables
//--------------------------------------------------------------------
public:
- void removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/, BOOL will_replace = false);
+ void removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);
private:
void removeWearableFinal(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);
protected:
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 0b85f438bd..c2be472cbc 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1994,7 +1994,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);
selfStartPhase("update_appearance_from_cof");
- LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL;
+ LL_DEBUGS("Avatar") << self_av_string() << "starting" << LL_ENDL;
//checking integrity of the COF in terms of ordering of wearables,
//checking and updating links' descriptions of wearables in the COF (before analyzed for "dirty" state)
@@ -3593,7 +3593,7 @@ LLAppearanceMgr::~LLAppearanceMgr()
void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)
{
- llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl;
+ LL_DEBUGS("Avatar") << "setAttachmentInvLinkEnable => " << (int) val << llendl;
mAttachmentInvLinkEnabled = val;
}
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index 5f9556a870..b1f9a18d6f 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -67,15 +67,17 @@ void LLFloaterSidePanelContainer::onClickCloseBtn()
if (parent == this )
{
LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
- if ( panel_appearance )
- {
- panel_appearance->getWearable()->onClose();
- panel_appearance->showOutfitsInventoryPanel();
- }
+ panel_appearance->onClose(this);
}
}
-
- LLFloater::onClickCloseBtn();
+ else
+ {
+ LLFloater::onClickCloseBtn();
+ }
+}
+void LLFloaterSidePanelContainer::close()
+{
+ LLFloater::onClickCloseBtn();
}
LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 491723471f..940673b643 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -55,6 +55,8 @@ public:
LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
+ void close();
+
static void showPanel(const std::string& floater_name, const LLSD& key);
static void showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key);
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 0b3268eb54..6ff16742dd 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -292,10 +292,7 @@ void LLInspectAvatar::processAvatarData(LLAvatarData* data)
delete mPropertiesRequest;
mPropertiesRequest = NULL;
}
-/*
-prep#
- virtual void httpFailure()
- */
+
void LLInspectAvatar::updateVolumeSlider()
{
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 065ec093f7..8d7478233a 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2003,8 +2003,9 @@ bool LLInventoryModel::loadSkeleton(
{
LLViewerInventoryCategory* cat = (*invalid_cat_it).get();
cat->setVersion(NO_VERSION);
- llinfos << "Invalidating category name: " << cat->getName() << " UUID: " << cat->getUUID() << " due to invalid descendents cache" << llendl;
+ LL_DEBUGS("Inventory") << "Invalidating category name: " << cat->getName() << " UUID: " << cat->getUUID() << " due to invalid descendents cache" << llendl;
}
+ LL_INFOS("Inventory") << "Invalidated " << invalid_categories.size() << " categories due to invalid descendents cache" << llendl;
// At this point, we need to set the known descendents for each
// category which successfully cached so that we do not
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 74fa5a87bb..53b5593ac9 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -48,6 +48,8 @@
#include "llviewerregion.h"
#include "llvoavatarself.h"
#include "llviewerwearable.h"
+#include "llnotificationsutil.h"
+#include "llfloatersidepanelcontainer.h"
static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
@@ -70,13 +72,84 @@ private:
LLSidepanelAppearance *mPanel;
};
+bool LLSidepanelAppearance::callBackExitWithoutSaveViaBack(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if ( option == 0 )
+ {
+ gSavedSettings.setBOOL("ExitOutfitEditWithoutSave", TRUE);
+ LLAppearanceMgr::instance().setOutfitDirty( true );
+ showOutfitsInventoryPanel();
+ LLAppearanceMgr::getInstance()->wearBaseOutfit();
+ return true;
+ }
+ gSavedSettings.setBOOL("ExitOutfitEditWithoutSave", FALSE);
+ return false;
+}
+
+bool LLSidepanelAppearance::callBackExitWithoutSaveViaClose(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if ( option == 0 )
+ {
+ gSavedSettings.setBOOL("ExitOutfitEditWithoutSave", TRUE);
+ mEditWearable->revertChanges();
+ LLAppearanceMgr::getInstance()->wearBaseOutfit();
+ mLLFloaterSidePanelContainer->close();
+ return true;
+ }
+ gSavedSettings.setBOOL("ExitOutfitEditWithoutSave", FALSE);
+ return false;
+}
+
+void LLSidepanelAppearance::onClickConfirmExitWithoutSaveViaClose()
+{
+ if ( LLAppearanceMgr::getInstance()->isOutfitDirty() && !LLAppearanceMgr::getInstance()->isOutfitLocked() )
+ {
+ LLSidepanelAppearance* pSelf = (LLSidepanelAppearance *)this;
+ LLNotificationsUtil::add("ConfirmExitWithoutSave", LLSD(), LLSD(), boost::bind(&LLSidepanelAppearance::callBackExitWithoutSaveViaClose,pSelf,_1,_2) );
+ }
+ else
+ {
+ showOutfitsInventoryPanel();
+ }
+}
+
+void LLSidepanelAppearance::onClickConfirmExitWithoutSaveViaBack()
+{
+ if ( LLAppearanceMgr::getInstance()->isOutfitDirty() && !mSidePanelJustOpened && !LLAppearanceMgr::getInstance()->isOutfitLocked() )
+ {
+ LLSidepanelAppearance* pSelf = (LLSidepanelAppearance *)this;
+ LLNotificationsUtil::add("ConfirmExitWithoutSave", LLSD(), LLSD(), boost::bind(&LLSidepanelAppearance::callBackExitWithoutSaveViaBack,pSelf,_1,_2) );
+ }
+ else
+ {
+ showOutfitsInventoryPanel();
+ }
+}
+
+void LLSidepanelAppearance::onClose(LLFloaterSidePanelContainer* obj)
+{
+ mLLFloaterSidePanelContainer = obj;
+ if ( LLAppearanceMgr::getInstance()->isOutfitDirty() && !LLAppearanceMgr::getInstance()->isOutfitLocked() )
+ {
+ LLSidepanelAppearance* pSelf = (LLSidepanelAppearance *)this;
+ LLNotificationsUtil::add("ConfirmExitWithoutSave", LLSD(), LLSD(), boost::bind(&LLSidepanelAppearance::callBackExitWithoutSaveViaClose,pSelf,_1,_2) );
+ }
+ else
+ {
+ mLLFloaterSidePanelContainer->close();
+ }
+}
+
LLSidepanelAppearance::LLSidepanelAppearance() :
LLPanel(),
mFilterSubString(LLStringUtil::null),
mFilterEditor(NULL),
mOutfitEdit(NULL),
mCurrOutfitPanel(NULL),
- mOpened(false)
+ mOpened(false),
+ mSidePanelJustOpened(true)
{
LLOutfitObserver& outfit_observer = LLOutfitObserver::instance();
outfit_observer.addBOFReplacedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
@@ -85,6 +158,8 @@ LLSidepanelAppearance::LLSidepanelAppearance() :
gAgentWearables.addLoadingStartedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, true));
gAgentWearables.addLoadedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, false));
+
+
}
LLSidepanelAppearance::~LLSidepanelAppearance()
@@ -119,8 +194,8 @@ BOOL LLSidepanelAppearance::postBuild()
{
LLButton* back_btn = mOutfitEdit->getChild<LLButton>("back_btn");
if (back_btn)
- {
- back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitsInventoryPanel, this));
+ {
+ back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onClickConfirmExitWithoutSaveViaBack, this));
}
}
@@ -144,6 +219,7 @@ BOOL LLSidepanelAppearance::postBuild()
setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChange,this,_2));
+
return TRUE;
}
@@ -183,6 +259,12 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
{
+ //handle leaving and subsequent user verification of discarding any unsaved data
+ if ( mSidePanelJustOpened )
+ {
+ mSidePanelJustOpened = false;
+ }
+
LLSD visibility;
visibility["visible"] = new_visibility.asBoolean();
visibility["reset_accordion"] = false;
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 762f557a80..85e7734567 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -38,9 +38,11 @@ class LLCurrentlyWornFetchObserver;
class LLPanelEditWearable;
class LLViewerWearable;
class LLPanelOutfitsInventory;
+class LLFloaterSidePanelContainer;
class LLSidepanelAppearance : public LLPanel
-{
+{
+
LOG_CLASS(LLSidepanelAppearance);
public:
LLSidepanelAppearance();
@@ -48,6 +50,8 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
+ void onClose(LLFloaterSidePanelContainer* obj);
+ void onClickCloseBtn();
void refreshCurrentOutfitName(const std::string& name = "");
@@ -65,6 +69,11 @@ public:
void updateScrollingPanelList();
void updateToVisibility( const LLSD& new_visibility );
LLPanelEditWearable* getWearable(){ return mEditWearable; }
+ bool callBackExitWithoutSaveViaBack(const LLSD& notification, const LLSD& response);
+ void onClickConfirmExitWithoutSaveViaBack();
+ bool callBackExitWithoutSaveViaClose(const LLSD& notification, const LLSD& response);
+ void onClickConfirmExitWithoutSaveViaClose();
+
private:
void onFilterEdit(const std::string& search_string);
@@ -85,6 +94,7 @@ private:
LLButton* mOpenOutfitBtn;
LLButton* mEditAppearanceBtn;
LLButton* mNewOutfitBtn;
+
LLPanel* mCurrOutfitPanel;
LLTextBox* mCurrentLookName;
@@ -99,6 +109,10 @@ private:
// Gets set to true when we're opened for the first time.
bool mOpened;
+ // Set to true if sidepanel has just been opened
+ bool mSidePanelJustOpened;
+ LLFloaterSidePanelContainer* mLLFloaterSidePanelContainer;
+
};
#endif //LL_LLSIDEPANELAPPEARANCE_H
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 3c3c699d17..bf209df863 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -855,10 +855,7 @@ void LLIMSpeakerMgr::updateSpeakers(const LLSD& update)
}
}
}
-/*prep#
- virtual void httpFailure()
- llwarns << dumpResponse() << llendl;
- */
+
void LLIMSpeakerMgr::toggleAllowTextChat(const LLUUID& speaker_id)
{
LLPointer<LLSpeaker> speakerp = findSpeaker(speaker_id);
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index f3c9921819..777e1f9c76 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -363,7 +363,7 @@ BOOL LLViewerTexLayerSetBuffer::requestUpdateImmediate()
void LLViewerTexLayerSetBuffer::doUpload()
{
LLViewerTexLayerSet* layer_set = getViewerTexLayerSet();
- llinfos << "Uploading baked " << layer_set->getBodyRegionName() << llendl;
+ LL_DEBUGS("Avatar") << "Uploading baked " << layer_set->getBodyRegionName() << llendl;
LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);
// Don't need caches since we're baked now. (note: we won't *really* be baked
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 58da77efbb..cf4cc64ac3 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3208,7 +3208,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
}
root_pos = gAgent.getPosGlobalFromAgent(getRenderPosition());
- root_pos.mdV[VZ] += getVisualParamWeight(11001);
+ root_pos.mdV[VZ] += getVisualParamWeight(AVATAR_HOVER);
resolveHeightGlobal(root_pos, ground_under_pelvis, normal);
@@ -6655,7 +6655,7 @@ LLBBox LLVOAvatar::getHUDBBox() const
//-----------------------------------------------------------------------------
void LLVOAvatar::onFirstTEMessageReceived()
{
- LL_INFOS("Avatar") << avString() << LL_ENDL;
+ LL_DEBUGS("Avatar") << avString() << LL_ENDL;
if( !mFirstTEMessageReceived )
{
mFirstTEMessageReceived = TRUE;
@@ -6817,7 +6817,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
U8 av_u8;
mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, av_u8, 0);
contents.mAppearanceVersion = av_u8;
- llinfos << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl;
+ LL_DEBUGS("Avatar") << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl;
mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, contents.mCOFVersion, 0);
// For future use:
//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
@@ -6864,7 +6864,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
if (num_blocks != expected_tweakable_count)
{
- llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << llendl;
+ LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << llendl;
}
}
else
@@ -6875,7 +6875,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
}
else
{
- llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
+ LL_DEBUGS("Avatar") << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
}
}
@@ -6886,7 +6886,6 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
if (it != contents.mParams.end())
{
S32 index = it - contents.mParams.begin();
- llinfos << "index: " << index << llendl;
contents.mParamAppearanceVersion = llround(contents.mParamWeights[index]);
LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mParamAppearanceVersion << llendl;
}
@@ -6932,7 +6931,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_";
- //if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }
if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))
{
llwarns << "Blocking AvatarAppearance message" << llendl;
@@ -6990,7 +6988,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
if (isSelf() && isEditingAppearance())
{
- llinfos << "ignoring appearance message while in appearance edit" << llendl;
+ LL_DEBUGS("Avatar") << "ignoring appearance message while in appearance edit" << llendl;
return;
}
@@ -7001,7 +6999,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
// appearance version, which may cause us to look for baked
// textures in the wrong place and flag them as missing
// assets.
- llinfos << "ignoring appearance message due to lack of params" << llendl;
+ LL_DEBUGS("Avatar") << "ignoring appearance message due to lack of params" << llendl;
return;
}
@@ -7029,7 +7027,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
mFirstAppearanceMessageReceived = TRUE;
- LL_INFOS("Avatar") << avString() << "processAvatarAppearance start " << mID
+ LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID
<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
if (is_first_appearance_message )
@@ -7069,7 +7067,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
if (num_params != expected_tweakable_count)
{
- llinfos << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << llendl;
+ LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << llendl;
}
if (params_changed)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 5f9b4a59e7..52c44e6e1b 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2773,7 +2773,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
void LLVOAvatarSelf::outputRezTiming(const std::string& msg) const
{
- LL_INFOS("Avatar")
+ LL_DEBUGS("Avatar")
<< avString()
<< llformat("%s. Time from avatar creation: %.2f", msg.c_str(), mDebugSelfLoadTimer.getElapsedTimeF32())
<< LL_ENDL;
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 105bef7321..2170283af2 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -10030,5 +10030,18 @@ Cannot create large prims that intersect other players. Please re-try when othe
name="okignore"
yestext="OK"/>
</notification>
+
+
+ <notification
+ icon="alertmodal.tga"
+ name="ConfirmExitWithoutSave"
+ type="alertmodal">
+ Closing this window will discard any changes you have made.
+ <tag>confirm</tag>
+ <usetemplate
+ name="okcancelbuttons"
+ notext="Cancel"
+ yestext="OK"/>
+ </notification>
</notifications>