From 312b2563548c19837707b6598932d8ef19430f73 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Fri, 1 Mar 2013 13:50:21 -0500 Subject: [PATCH 01/38] Periodic log messages to explain why user is still clouded, if they are --- indra/newview/llvoavatarself.cpp | 52 ++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index c069488a37..d3c91f3339 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -1946,19 +1946,41 @@ void LLVOAvatarSelf::dumpTotalLocalTextureByteCount() BOOL LLVOAvatarSelf::getIsCloud() const { - // do we have our body parts? - if (gAgentWearables.getWearableCount(LLWearableType::WT_SHAPE) == 0 || - gAgentWearables.getWearableCount(LLWearableType::WT_HAIR) == 0 || - gAgentWearables.getWearableCount(LLWearableType::WT_EYES) == 0 || - gAgentWearables.getWearableCount(LLWearableType::WT_SKIN) == 0) + // Let people know why they're clouded without spamming them into oblivion. + bool do_warn = false; + static LLTimer time_since_notice; + F32 update_freq = 30.0; + if (time_since_notice.getElapsedTimeF32() > update_freq) { - lldebugs << "No body parts" << llendl; + time_since_notice.reset(); + do_warn = true; + } + + // do we have our body parts? + S32 shape_count = gAgentWearables.getWearableCount(LLWearableType::WT_SHAPE); + S32 hair_count = gAgentWearables.getWearableCount(LLWearableType::WT_HAIR); + S32 eye_count = gAgentWearables.getWearableCount(LLWearableType::WT_EYES); + S32 skin_count = gAgentWearables.getWearableCount(LLWearableType::WT_SKIN); + if (!shape_count || !hair_count || !eye_count || !skin_count) + { + if (do_warn) + { + llinfos << "Self is clouded due to missing one or more required body parts: " + << (shape_count ? "" : "SHAPE ") + << (hair_count ? "" : "HAIR ") + << (eye_count ? "" : "EYES ") + << (skin_count ? "" : "SKIN ") + << llendl; + } return TRUE; } if (!isTextureDefined(TEX_HAIR, 0)) { - lldebugs << "No hair texture" << llendl; + if (do_warn) + { + llinfos << "Self is clouded because of no hair texture" << llendl; + } return TRUE; } @@ -1967,14 +1989,20 @@ BOOL LLVOAvatarSelf::getIsCloud() const if (!isLocalTextureDataAvailable(getLayerSet(BAKED_LOWER)) && (!isTextureDefined(TEX_LOWER_BAKED, 0))) { - lldebugs << "Lower textures not baked" << llendl; + if (do_warn) + { + llinfos << "Self is clouded because lower textures not baked" << llendl; + } return TRUE; } if (!isLocalTextureDataAvailable(getLayerSet(BAKED_UPPER)) && (!isTextureDefined(TEX_UPPER_BAKED, 0))) { - lldebugs << "Upper textures not baked" << llendl; + if (do_warn) + { + llinfos << "Self is clouded because upper textures not baked" << llendl; + } return TRUE; } @@ -1991,7 +2019,11 @@ BOOL LLVOAvatarSelf::getIsCloud() const const LLViewerTexture* baked_img = getImage( texture_data.mTextureIndex, 0 ); if (!baked_img || !baked_img->hasGLTexture()) { - lldebugs << "Texture at index " << i << " (texture index is " << texture_data.mTextureIndex << ") is not loaded" << llendl; + if (do_warn) + { + llinfos << "Self is clouded because texture at index " << i + << " (texture index is " << texture_data.mTextureIndex << ") is not loaded" << llendl; + } return TRUE; } } From 3e5599a827238faa4fcccfad9702428ce4ea6f46 Mon Sep 17 00:00:00 2001 From: Nyx Linden Date: Fri, 1 Mar 2013 19:39:47 -0500 Subject: [PATCH 02/38] SH-3649 WIP newly created pants do not show up on mac/windows. Added an initializer for the wearable definition version when creating a new wearable. Should fix the issue but need to test. --- indra/newview/llwearablelist.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 507ce57e79..ef1a953f59 100755 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -249,6 +249,8 @@ LLViewerWearable* LLWearableList::createNewWearable( LLWearableType::EType type, perm.initMasks(PERM_ALL, PERM_ALL, PERM_NONE, PERM_NONE, PERM_MOVE | PERM_TRANSFER); wearable->setPermissions(perm); + wearable->setDefinitionVersion(LLWearable::getCurrentDefinitionVersion()); + // Description and sale info have default values. wearable->setParamsToDefaults(); wearable->setTexturesToDefaults(); From 8410887e2e8327f3a24e74f6bc89a4feddcbff62 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Sun, 3 Mar 2013 23:32:48 -0800 Subject: [PATCH 03/38] Adding DebugAvatarExperimentalServerAppearanceUpdate setting to test sending full cof contents --- indra/newview/app_settings/settings.xml | 11 ++++++ indra/newview/llappearancemgr.cpp | 48 +++++++++++++++++++++---- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 826a79b455..215fcf4eab 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1937,6 +1937,17 @@ Boolean Value 0 + + DebugAvatarExperimentalServerAppearanceUpdate + + Comment + Experiment with sending full cof_contents instead of cof_version + Persist + 1 + Type + Boolean + Value + 0 DebugAvatarRezTime diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index d8ba4239b7..cc78d5a2fc 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3177,10 +3177,41 @@ LLSD LLAppearanceMgr::dumpCOF() const const LLViewerInventoryItem* inv_item = item_array.get(i).get(); LLSD item; item["item_id"] = inv_item->getUUID(); - item["linked_item_id"] = inv_item->getLinkedUUID(); item["name"] = inv_item->getName(); item["description"] = inv_item->getActualDescription(); - item["type"] = inv_item->getActualType(); + item["asset_type"] = inv_item->getActualType(); + item["inv_type"] = inv_item->getInventoryType(); + item["linked_id"] = inv_item->getLinkedUUID(); + + if (LLAssetType::AT_LINK == inv_item->getActualType()) + { + const LLViewerInventoryItem* linked_item = inv_item->getLinkedItem(); + if (NULL == linked_item) + { + llwarns << "Broken link for item '" << inv_item->getName() + << "' (" << inv_item->getUUID() + << ") during requestServerAppearanceUpdate" << llendl; + continue; + } + if (linked_item->getAssetUUID().isNull()) + { + llwarns << "Broken link (null asset) for item '" << inv_item->getName() + << "' (" << inv_item->getUUID() + << ") during requestServerAppearanceUpdate" << llendl; + continue; + } + item["linked_asset_id"] = linked_item->getAssetUUID(); + item["linked_asset_type"] = linked_item->getType(); + item["linked_flags"] = LLSD::Integer(linked_item->getFlags()); + } + else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType()) + { + llwarns << "Non-link item '" << inv_item->getName() + << "' (" << inv_item->getUUID() + << ") type " << (S32) inv_item->getActualType() + << " during requestServerAppearanceUpdate" << llendl; + continue; + } result.append(item); } return result; @@ -3212,14 +3243,17 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond LLSD body; S32 cof_version = getCOFVersion(); - body["cof_version"] = cof_version; - if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure")) + if (gSavedSettings.getBOOL("DebugAvatarExperimentalServerAppearanceUpdate")) { - body["cof_version"] = cof_version+999; + body["cof_contents"] = dumpCOF(); } - if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage")) + else { - body["debug_cof"] = dumpCOF(); + body["cof_version"] = cof_version; + if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure")) + { + body["cof_version"] = cof_version+999; + } } LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl; From ec1bc19d01715299209d9f00230e4681917bde12 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Mon, 4 Mar 2013 01:09:45 -0800 Subject: [PATCH 04/38] Adding md5sum calculation to experimental server appearance update message --- indra/newview/llappearancemgr.cpp | 36 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index cc78d5a2fc..2cebf6863e 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -26,6 +26,7 @@ #include "llviewerprecompiledheaders.h" +#include #include "llaccordionctrltab.h" #include "llagent.h" #include "llagentcamera.h" @@ -52,6 +53,11 @@ #include "llsdutil.h" #include "llsdserialize.h" +#if LL_MSVC +// disable boost::lexical_cast warning +#pragma warning (disable:4702) +#endif + std::string self_av_string() { // On logout gAgentAvatarp can already be invalid @@ -3167,7 +3173,8 @@ public: LLSD LLAppearanceMgr::dumpCOF() const { - LLSD result = LLSD::emptyArray(); + LLSD links = LLSD::emptyArray(); + LLMD5 md5; LLInventoryModel::cat_array_t cat_array; LLInventoryModel::item_array_t item_array; @@ -3176,12 +3183,17 @@ LLSD LLAppearanceMgr::dumpCOF() const { const LLViewerInventoryItem* inv_item = item_array.get(i).get(); LLSD item; - item["item_id"] = inv_item->getUUID(); + LLUUID item_id(inv_item->getUUID()); + item["item_id"] = item_id; + md5.update((unsigned char*)item_id.mData, 16); item["name"] = inv_item->getName(); item["description"] = inv_item->getActualDescription(); + md5.update(inv_item->getActualDescription()); item["asset_type"] = inv_item->getActualType(); item["inv_type"] = inv_item->getInventoryType(); - item["linked_id"] = inv_item->getLinkedUUID(); + LLUUID linked_id(inv_item->getLinkedUUID()); + item["linked_id"] = linked_id; + md5.update((unsigned char*)linked_id.mData, 16); if (LLAssetType::AT_LINK == inv_item->getActualType()) { @@ -3200,9 +3212,13 @@ LLSD LLAppearanceMgr::dumpCOF() const << ") during requestServerAppearanceUpdate" << llendl; continue; } - item["linked_asset_id"] = linked_item->getAssetUUID(); + LLUUID linked_asset_id(linked_item->getAssetUUID()); + item["linked_asset_id"] = linked_asset_id; + md5.update((unsigned char*)linked_asset_id.mData, 16); item["linked_asset_type"] = linked_item->getType(); - item["linked_flags"] = LLSD::Integer(linked_item->getFlags()); + U32 flags = linked_item->getFlags(); + item["linked_flags"] = LLSD::Integer(flags); + md5.update(boost::lexical_cast(flags)); } else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType()) { @@ -3212,8 +3228,14 @@ LLSD LLAppearanceMgr::dumpCOF() const << " during requestServerAppearanceUpdate" << llendl; continue; } - result.append(item); + links.append(item); } + LLSD result = LLSD::emptyMap(); + result["cof_contents"] = links; + char cof_md5sum[MD5HEX_STR_SIZE]; + md5.finalize(); + md5.hex_digest(cof_md5sum); + result["cof_md5sum"] = std::string(cof_md5sum); return result; } @@ -3245,7 +3267,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond S32 cof_version = getCOFVersion(); if (gSavedSettings.getBOOL("DebugAvatarExperimentalServerAppearanceUpdate")) { - body["cof_contents"] = dumpCOF(); + body = dumpCOF(); } else { From 2e942026865e921ad5bc89cc5d8311abf0924163 Mon Sep 17 00:00:00 2001 From: prep Date: Mon, 4 Mar 2013 13:14:35 -0500 Subject: [PATCH 05/38] Removed deprecated calls to incrementCofVersion --- indra/newview/llpaneleditwearable.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index a49bbcd924..e71dba5cae 100755 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -1105,15 +1105,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as) 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() From 2efe411a4fd8d76e9a153ed4aad9235819738328 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Mon, 4 Mar 2013 12:02:02 -0800 Subject: [PATCH 06/38] Reducing amount of cof link data sent to appearance update service. Allowing links to items with 'null' asset ids to be passed --- indra/newview/llappearancemgr.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 2cebf6863e..fa239e2c8a 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3184,13 +3184,10 @@ LLSD LLAppearanceMgr::dumpCOF() const const LLViewerInventoryItem* inv_item = item_array.get(i).get(); LLSD item; LLUUID item_id(inv_item->getUUID()); - item["item_id"] = item_id; md5.update((unsigned char*)item_id.mData, 16); - item["name"] = inv_item->getName(); item["description"] = inv_item->getActualDescription(); md5.update(inv_item->getActualDescription()); item["asset_type"] = inv_item->getActualType(); - item["inv_type"] = inv_item->getInventoryType(); LLUUID linked_id(inv_item->getLinkedUUID()); item["linked_id"] = linked_id; md5.update((unsigned char*)linked_id.mData, 16); @@ -3205,19 +3202,17 @@ LLSD LLAppearanceMgr::dumpCOF() const << ") during requestServerAppearanceUpdate" << llendl; continue; } - if (linked_item->getAssetUUID().isNull()) - { - llwarns << "Broken link (null asset) for item '" << inv_item->getName() - << "' (" << inv_item->getUUID() - << ") during requestServerAppearanceUpdate" << llendl; - continue; - } + // Some assets may be 'hidden' and show up as null in the viewer. + //if (linked_item->getAssetUUID().isNull()) + //{ + // llwarns << "Broken link (null asset) for item '" << inv_item->getName() + // << "' (" << inv_item->getUUID() + // << ") during requestServerAppearanceUpdate" << llendl; + // continue; + //} LLUUID linked_asset_id(linked_item->getAssetUUID()); - item["linked_asset_id"] = linked_asset_id; md5.update((unsigned char*)linked_asset_id.mData, 16); - item["linked_asset_type"] = linked_item->getType(); U32 flags = linked_item->getFlags(); - item["linked_flags"] = LLSD::Integer(flags); md5.update(boost::lexical_cast(flags)); } else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType()) From 9a0c52a247ecbd79f5f872ceb97a6be3e0499bea Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Tue, 5 Mar 2013 11:28:06 -0800 Subject: [PATCH 07/38] Adding debug setting to allow overriding appearance service url --- indra/newview/app_settings/settings.xml | 22 +++++++++++----------- indra/newview/llappearancemgr.cpp | 9 +++++++++ indra/newview/llappearancemgr.h | 7 +++++++ indra/newview/llstartup.cpp | 2 +- indra/newview/llvoavatar.cpp | 7 ++++--- indra/newview/llvoavatarself.cpp | 2 +- 6 files changed, 33 insertions(+), 16 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 215fcf4eab..089bc7d4cd 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -71,17 +71,6 @@ Value 0 - AgentAppearanceServiceURL - - Comment - Current Session Agent Appearance Service URL - Persist - 0 - Type - String - Value - - AlertedUnsupportedHardware Comment @@ -1949,6 +1938,17 @@ Value 0 + DebugAvatarAppearanceServiceURLOverride + + Comment + URL to use for baked texture requests; overrides value returned by login server. + Persist + 1 + Type + String + Value + + DebugAvatarRezTime Comment diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index fa239e2c8a..1561f8d74c 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3359,6 +3359,15 @@ void LLAppearanceMgr::incrementCofVersion(LLHTTPClient::ResponderPtr responder_p LLHTTPClient::get(url, body, responder_ptr, headers, 30.0f); } +std::string LLAppearanceMgr::getAppearanceServiceURL() const +{ + if (gSavedSettings.getString("DebugAvatarAppearanceServiceURLOverride").empty()) + { + return mAppearanceServiceURL; + } + return gSavedSettings.getString("DebugAvatarAppearanceServiceURLOverride"); +} + 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 84e08db4c8..d49f5d6c15 100755 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -205,6 +205,13 @@ public: // *HACK Remove this after server side texture baking is deployed on all sims. void incrementCofVersionLegacy(); + void setAppearanceServiceURL(const std::string& url) { mAppearanceServiceURL = url; } + std::string getAppearanceServiceURL() const; + +private: + std::string mAppearanceServiceURL; + + protected: LLAppearanceMgr(); ~LLAppearanceMgr(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 156aa25274..e6e7b8650c 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3449,7 +3449,7 @@ bool process_login_success_response() std::string agent_appearance_url = response["agent_appearance_service"]; if (!agent_appearance_url.empty()) { - gSavedSettings.setString("AgentAppearanceServiceURL", agent_appearance_url); + LLAppearanceMgr::instance().setAppearanceServiceURL(agent_appearance_url); } // Set the location of the snapshot sharing config endpoint diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f6fd8b2409..df44251c32 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4496,7 +4496,8 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid) std::string url = ""; if (isUsingServerBakes()) { - if (gSavedSettings.getString("AgentAppearanceServiceURL").empty()) + const std::string& appearance_service_url = LLAppearanceMgr::instance().getAppearanceServiceURL(); + if (appearance_service_url.empty()) { // Probably a server-side issue if we get here: llwarns << "AgentAppearanceServiceURL not set - Baked texture requests will fail" << llendl; @@ -4506,7 +4507,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid) const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te); if (texture_entry != NULL) { - url = gSavedSettings.getString("AgentAppearanceServiceURL") + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString(); + url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString(); //llinfos << "baked texture url: " << url << llendl; } } @@ -7256,7 +7257,7 @@ void LLVOAvatar::onBakedTextureLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata) { - // llinfos << "onBakedTextureLoaded: " << src_vi->getID() << llendl; + LL_DEBUGS("Avatar") << "onBakedTextureLoaded: " << src_vi->getID() << LL_ENDL; LLUUID id = src_vi->getID(); LLUUID *avatar_idp = (LLUUID *)userdata; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index d3c91f3339..3605383c5c 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2469,7 +2469,7 @@ void LLVOAvatarSelf::checkForUnsupportedServerBakeAppearance() return; // if baked image service is unknown, need to refresh. - if (gSavedSettings.getString("AgentAppearanceServiceURL").empty()) + if (LLAppearanceMgr::instance().getAppearanceServiceURL().empty()) { CheckAgentAppearanceServiceResponder::forceAppearanceUpdate(); } From 54cdc322b8f2bd35b289cacf3493622e7cc51194 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Tue, 5 Mar 2013 22:05:22 -0800 Subject: [PATCH 08/38] Fixing issues with not detecting when LLSD XML parsing fails. Changing most http error handlers to understand LLSD error responses. Fleshing out most http error handler message spam. --- indra/llcommon/llmetricperformancetester.cpp | 2 +- indra/llcommon/llsdserialize.h | 16 ++--- indra/llcommon/llsdserialize_xml.cpp | 18 ++++-- indra/llcrashlogger/llcrashlogger.cpp | 2 +- indra/llmessage/llavatarnamecache.cpp | 6 +- indra/llmessage/llcachename.cpp | 4 +- indra/llmessage/llcurl.cpp | 4 +- indra/llplugin/llpluginprocessparent.cpp | 3 +- indra/llui/llspellcheck.cpp | 8 ++- indra/llxml/llcontrol.cpp | 6 +- indra/newview/llaccountingcostmanager.cpp | 4 +- indra/newview/llagent.cpp | 13 ++-- indra/newview/llagentpilot.cpp | 2 +- indra/newview/llappearancemgr.cpp | 6 +- indra/newview/llassetuploadqueue.cpp | 7 ++- indra/newview/llassetuploadresponders.cpp | 15 ++--- indra/newview/llassetuploadresponders.h | 6 +- indra/newview/llclassifiedstatsresponder.cpp | 5 +- indra/newview/llclassifiedstatsresponder.h | 2 +- indra/newview/llestateinfomodel.cpp | 4 +- indra/newview/lleventpoll.cpp | 12 ++-- indra/newview/llfasttimerview.cpp | 6 +- indra/newview/llfloateravatarpicker.cpp | 3 +- indra/newview/llfloaterregiondebugconsole.cpp | 2 +- indra/newview/llfloaterregioninfo.cpp | 16 ++--- indra/newview/llfloaterreporter.cpp | 2 +- indra/newview/llfloaterscriptlimits.cpp | 16 ++--- indra/newview/llfloaterscriptlimits.h | 8 +-- indra/newview/llgroupmgr.cpp | 7 ++- indra/newview/llhomelocationresponder.cpp | 4 +- indra/newview/llhomelocationresponder.h | 2 +- indra/newview/llimfloater.cpp | 5 +- indra/newview/llimpanel.cpp | 5 +- indra/newview/llimview.cpp | 11 +++- indra/newview/llinspectavatar.cpp | 4 +- indra/newview/llinventorymodel.cpp | 10 ++-- indra/newview/llinventorymodel.h | 2 +- .../llinventorymodelbackgroundfetch.cpp | 14 ++--- indra/newview/llmediadataclient.cpp | 10 ++-- indra/newview/llmediadataclient.h | 4 +- indra/newview/llpathfindingmanager.cpp | 59 +++++++++++-------- indra/newview/llpathfindingnavmesh.cpp | 5 +- indra/newview/llpathfindingnavmesh.h | 2 +- indra/newview/llproductinforequest.cpp | 6 +- indra/newview/llremoteparcelrequest.cpp | 6 +- indra/newview/llremoteparcelrequest.h | 2 +- indra/newview/llspeakers.cpp | 4 +- indra/newview/lluploadfloaterobservers.cpp | 5 +- indra/newview/lluploadfloaterobservers.h | 2 +- indra/newview/llviewerdisplayname.cpp | 4 +- indra/newview/llviewerobjectlist.cpp | 12 ++-- indra/newview/llviewerregion.cpp | 15 +++-- indra/newview/llviewerstats.cpp | 6 +- indra/newview/llvoavatarself.cpp | 7 ++- indra/newview/llvoicechannel.cpp | 10 ++-- indra/newview/llvoicevivox.cpp | 21 +++---- indra/newview/llwebsharing.cpp | 16 ++--- indra/newview/llwlhandlers.cpp | 17 +++--- indra/newview/llwlhandlers.h | 5 +- .../newview/tests/llmediadataclient_test.cpp | 4 +- 60 files changed, 267 insertions(+), 217 deletions(-) diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp index 41d3eb0bf3..731e58bd20 100644 --- a/indra/llcommon/llmetricperformancetester.cpp +++ b/indra/llcommon/llmetricperformancetester.cpp @@ -100,7 +100,7 @@ LLSD LLMetricPerformanceTesterBasic::analyzeMetricPerformanceLog(std::istream& i LLSD ret; LLSD cur; - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter) { diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h index 86e3fc864c..e7a5507385 100644 --- a/indra/llcommon/llsdserialize.h +++ b/indra/llcommon/llsdserialize.h @@ -300,7 +300,7 @@ public: /** * @brief Constructor */ - LLSDXMLParser(); + LLSDXMLParser(bool emit_errors=true); protected: /** @@ -747,25 +747,25 @@ public: return f->format(sd, str, LLSDFormatter::OPTIONS_PRETTY); } - static S32 fromXMLEmbedded(LLSD& sd, std::istream& str) + static S32 fromXMLEmbedded(LLSD& sd, std::istream& str, bool emit_errors=true) { // no need for max_bytes since xml formatting is not // subvertable by bad sizes. - LLPointer p = new LLSDXMLParser; + LLPointer p = new LLSDXMLParser(emit_errors); return p->parse(str, sd, LLSDSerialize::SIZE_UNLIMITED); } // Line oriented parser, 30% faster than fromXML(), but can // only be used when you know you have the complete XML // document available in the stream. - static S32 fromXMLDocument(LLSD& sd, std::istream& str) + static S32 fromXMLDocument(LLSD& sd, std::istream& str, bool emit_errors=true) { - LLPointer p = new LLSDXMLParser(); + LLPointer p = new LLSDXMLParser(emit_errors); return p->parseLines(str, sd); } - static S32 fromXML(LLSD& sd, std::istream& str) + static S32 fromXML(LLSD& sd, std::istream& str, bool emit_errors=true) { - return fromXMLEmbedded(sd, str); -// return fromXMLDocument(sd, str); + return fromXMLEmbedded(sd, str, emit_errors); +// return fromXMLDocument(sd, str, emit_errors); } /* diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index 34b3dbb99a..cef743a7be 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -250,7 +250,7 @@ std::string LLSDXMLFormatter::escapeString(const std::string& in) class LLSDXMLParser::Impl { public: - Impl(); + Impl(bool emit_errors); ~Impl(); S32 parse(std::istream& input, LLSD& data); @@ -294,6 +294,7 @@ private: static const XML_Char* findAttribute(const XML_Char* name, const XML_Char** pairs); + bool mEmitErrors; XML_Parser mParser; @@ -315,7 +316,8 @@ private: }; -LLSDXMLParser::Impl::Impl() +LLSDXMLParser::Impl::Impl(bool emit_errors) + : mEmitErrors(emit_errors) { mParser = XML_ParserCreate(NULL); reset(); @@ -402,7 +404,10 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data) { ((char*) buffer)[count ? count - 1 : 0] = '\0'; } - llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; + if (mEmitErrors) + { + llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; + } data = LLSD(); return LLSDParser::PARSE_FAILURE; } @@ -480,7 +485,10 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data) if (status == XML_STATUS_ERROR && !mGracefullStop) { - llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; + if (mEmitErrors) + { + llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; + } return LLSDParser::PARSE_FAILURE; } @@ -897,7 +905,7 @@ LLSDXMLParser::Impl::Element LLSDXMLParser::Impl::readElement(const XML_Char* na /** * LLSDXMLParser */ -LLSDXMLParser::LLSDXMLParser() : impl(* new Impl) +LLSDXMLParser::LLSDXMLParser(bool emit_errors /* = true */) : impl(* new Impl(emit_errors)) { } diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 34e25a8a71..fb2d43e3b0 100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -147,7 +147,7 @@ void LLCrashLogger::gatherFiles() // Look for it in the debug_info.log file if (debug_log_file.is_open()) - { + { LLSDSerialize::fromXML(mDebugLog, debug_log_file); mCrashInPreviousExec = mDebugLog["CrashNotHandled"].asBoolean(); diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index a6e2c89ba4..f9e3ad26f7 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -443,8 +443,10 @@ void LLAvatarNameCache::cleanupClass() void LLAvatarNameCache::importFile(std::istream& istr) { LLSD data; - S32 parse_count = LLSDSerialize::fromXMLDocument(data, istr); - if (parse_count < 1) return; + if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr)) + { + return; + } // by convention LLSD storage is a map // we only store one entry in the map diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 8f4af1984c..d9eb65ff59 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -308,8 +308,10 @@ boost::signals2::connection LLCacheName::addObserver(const LLCacheNameCallback& bool LLCacheName::importFile(std::istream& istr) { LLSD data; - if(LLSDSerialize::fromXMLDocument(data, istr) < 1) + if(LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr)) + { return false; + } // We'll expire entries more than a week old U32 now = (U32)time(NULL); diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 8ffa8e4271..47041a2880 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -175,9 +175,11 @@ void LLCurl::Responder::completedRaw( { LLSD content; LLBufferStream istr(channels, buffer.get()); - if (!LLSDSerialize::fromXML(content, istr)) + const bool emit_errors = false; + if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(content, istr, emit_errors)) { llinfos << "Failed to deserialize LLSD. " << mURL << " [" << status << "]: " << reason << llendl; + content["reason"] = reason; } completed(status, reason, content); diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 71a6145b58..a4da7674d5 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -31,6 +31,7 @@ #include "llpluginprocessparent.h" #include "llpluginmessagepipe.h" #include "llpluginmessageclasses.h" +#include "llsdserialize.h" #include "stringize.h" #include "llapr.h" @@ -836,7 +837,7 @@ void LLPluginProcessParent::receiveMessageRaw(const std::string &message) LL_DEBUGS("Plugin") << "Received: " << message << LL_ENDL; LLPluginMessage parsed; - if(parsed.parse(message) != -1) + if(LLSDParser::PARSE_FAILURE != parsed.parse(message)) { if(parsed.hasValue("blocking_request")) { diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp index a189375fbe..250372da5b 100644 --- a/indra/llui/llspellcheck.cpp +++ b/indra/llui/llspellcheck.cpp @@ -145,10 +145,14 @@ void LLSpellChecker::refreshDictionaryMap() // Load dictionary information (file name, friendly name, ...) llifstream user_file(user_path + DICT_FILE_MAIN, std::ios::binary); - if ( (!user_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) || (0 == sDictMap.size()) ) + if ( (!user_file.is_open()) + || (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) + || (0 == sDictMap.size()) ) { llifstream app_file(app_path + DICT_FILE_MAIN, std::ios::binary); - if ( (!app_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) || (0 == sDictMap.size()) ) + if ( (!app_file.is_open()) + || (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) + || (0 == sDictMap.size()) ) { return; } diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 53d9380f4f..666c03e9ff 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -850,12 +850,10 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v return 0; } - S32 ret = LLSDSerialize::fromXML(settings, infile); - - if (ret <= 0) + if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(settings, infile)) { infile.close(); - llwarns << "Unable to open LLSD control file " << filename << ". Trying Legacy Method." << llendl; + llwarns << "Unable to parse LLSD control file " << filename << ". Trying Legacy Method." << llendl; return loadFromFileLegacy(filename, TRUE, TYPE_STRING); } diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index 8767955fcb..7662a9689d 100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp @@ -56,9 +56,9 @@ public: } } - void error( U32 statusNum, const std::string& reason ) + void errorWithContent( U32 statusNum, const std::string& reason, const LLSD& content ) { - llwarns << "Transport error "<handlePreferredMaturityResult(actualMaturity); } -void LLMaturityPreferencesResponder::error(U32 pStatus, const std::string& pReason) +void LLMaturityPreferencesResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { llwarns << "while attempting to change maturity preference from '" << LLViewerRegion::accessToString(mPreviousMaturity) - << "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error because '" - << pReason << "' [status:" << pStatus << "]" << llendl; + << "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error with [status:" + << pStatus << "]: " << (pContent.isDefined() ? pContent : LLSD(pReason)) << llendl; mAgent->handlePreferredMaturityError(); } @@ -2783,7 +2783,7 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity) // If we don't have a region, report it as an error if (getRegion() == NULL) { - responderPtr->error(0U, "region is not defined"); + responderPtr->errorWithContent(0U, "region is not defined", LLSD()); } else { @@ -2793,7 +2793,8 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity) // If the capability is not defined, report it as an error if (url.empty()) { - responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region"); + responderPtr->errorWithContent(0U, + "capability 'UpdateAgentInformation' is not defined for region", LLSD()); } else { diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp index 734c502fcf..c7872fc5f6 100644 --- a/indra/newview/llagentpilot.cpp +++ b/indra/newview/llagentpilot.cpp @@ -139,7 +139,7 @@ void LLAgentPilot::loadXML(const std::string& filename) mActions.reset(); LLSD record; - while (!file.eof() && LLSDSerialize::fromXML(record, file)) + while (!file.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(record, file)) { Action action; action.mTime = record["time"].asReal(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 1561f8d74c..2c76efc7fb 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3308,10 +3308,10 @@ public: app_mgr->mLastUpdateRequestCOFVersion = new_version; } - virtual void error(U32 pStatus, const std::string& pReason) + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& content) { - llwarns << "While attempting to increment the agent's cof we got an error because '" - << pReason << "' [status:" << pStatus << "]" << llendl; + llwarns << "While attempting to increment the agent's cof we got an error with [status:" + << pStatus << "]: " << content << llendl; F32 seconds_to_wait; if (mRetryPolicy->shouldRetry(pStatus,seconds_to_wait)) { diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp index f943759bb8..4bdb690225 100644 --- a/indra/newview/llassetuploadqueue.cpp +++ b/indra/newview/llassetuploadqueue.cpp @@ -69,10 +69,11 @@ public: delete mData; } - virtual void error(U32 statusNum, const std::string& reason) + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llwarns << "Error: " << reason << llendl; - LLUpdateTaskInventoryResponder::error(statusNum, reason); + llwarns << "LLAssetUploadChainResponder Error [status:" + << statusNum << "]: " << content << llendl; + LLUpdateTaskInventoryResponder::errorWithContent(statusNum, reason, content); LLAssetUploadQueue *queue = mSupplier->get(); if (queue) { diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 694bbdfb67..2564802387 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -225,10 +225,10 @@ LLAssetUploadResponder::~LLAssetUploadResponder() } // virtual -void LLAssetUploadResponder::error(U32 statusNum, const std::string& reason) +void LLAssetUploadResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "LLAssetUploadResponder::error " << statusNum - << " reason: " << reason << llendl; + llinfos << "LLAssetUploadResponder::error [status:" + << statusNum << "]: " << content << llendl; LLSD args; switch(statusNum) { @@ -340,9 +340,9 @@ LLNewAgentInventoryResponder::LLNewAgentInventoryResponder( } // virtual -void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reason) +void LLNewAgentInventoryResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - LLAssetUploadResponder::error(statusNum, reason); + LLAssetUploadResponder::errorWithContent(statusNum, reason, content); //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE); } @@ -487,9 +487,10 @@ void LLSendTexLayerResponder::uploadComplete(const LLSD& content) } } -void LLSendTexLayerResponder::error(U32 statusNum, const std::string& reason) +void LLSendTexLayerResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "status: " << statusNum << " reason: " << reason << llendl; + llinfos << "LLSendTexLayerResponder error [status:" + << statusNum << "]: " << content << llendl; // Invoke the original callback with an error result LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE); diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h index 381b919c4a..a6d1016136 100644 --- a/indra/newview/llassetuploadresponders.h +++ b/indra/newview/llassetuploadresponders.h @@ -42,7 +42,7 @@ public: LLAssetType::EType asset_type); ~LLAssetUploadResponder(); - virtual void error(U32 statusNum, const std::string& reason); + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); virtual void uploadUpload(const LLSD& content); virtual void uploadComplete(const LLSD& content); @@ -67,7 +67,7 @@ public: const LLSD& post_data, const std::string& file_name, LLAssetType::EType asset_type); - virtual void error(U32 statusNum, const std::string& reason); + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content); virtual void uploadComplete(const LLSD& content); virtual void uploadFailure(const LLSD& content); }; @@ -122,7 +122,7 @@ public: ~LLSendTexLayerResponder(); virtual void uploadComplete(const LLSD& content); - virtual void error(U32 statusNum, const std::string& reason); + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content); LLBakedUploadData * mBakedUploadData; }; diff --git a/indra/newview/llclassifiedstatsresponder.cpp b/indra/newview/llclassifiedstatsresponder.cpp index b4da31895f..e3cd83e174 100644 --- a/indra/newview/llclassifiedstatsresponder.cpp +++ b/indra/newview/llclassifiedstatsresponder.cpp @@ -62,8 +62,7 @@ void LLClassifiedStatsResponder::result(const LLSD& content) } /*virtual*/ -void LLClassifiedStatsResponder::error(U32 status, const std::string& reason) +void LLClassifiedStatsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "LLClassifiedStatsResponder::error(" - << status << ": " << reason << ")" << llendl; + llinfos << "LLClassifiedStatsResponder::error [status:" << status << "]: " << content << llendl; } diff --git a/indra/newview/llclassifiedstatsresponder.h b/indra/newview/llclassifiedstatsresponder.h index 3db1868cb2..06dcb62fd0 100644 --- a/indra/newview/llclassifiedstatsresponder.h +++ b/indra/newview/llclassifiedstatsresponder.h @@ -39,7 +39,7 @@ public: virtual void result(const LLSD& content); //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: LLUUID mClassifiedID; diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp index 0faa888398..2669b0340f 100644 --- a/indra/newview/llestateinfomodel.cpp +++ b/indra/newview/llestateinfomodel.cpp @@ -122,9 +122,9 @@ public: } // if we get an error response - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Failed to commit estate info (" << status << "): " << reason << llendl; + llwarns << "Failed to commit estate info [status:" << status << "]: " << content << llendl; } }; diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index 2c786b7f8b..e0f7223a8c 100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp @@ -62,7 +62,7 @@ namespace void handleMessage(const LLSD& content); - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); virtual void completedRaw(U32 status, @@ -187,7 +187,7 @@ namespace } //virtual - void LLEventPollResponder::error(U32 status, const std::string& reason) + void LLEventPollResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { if (mDone) return; @@ -207,13 +207,13 @@ namespace + mErrorCount * EVENT_POLL_ERROR_RETRY_SECONDS_INC , this); - llwarns << "Unexpected HTTP error. status: " << status << ", reason: " << reason << llendl; + llwarns << "LLEventPollResponder error [status:" << status << "]: " << content << llendl; } else { - llwarns << "LLEventPollResponder::error: <" << mCount << "> got " - << status << ": " << reason - << (mDone ? " -- done" : "") << llendl; + llwarns << "LLEventPollResponder error <" << mCount + << "> [status:" << status << "]: " << content + << (mDone ? " -- done" : "") << llendl; stop(); // At this point we have given up and the viewer will not receive HTTP messages from the simulator. diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 19fca9b95d..fbf72b1a85 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -1070,7 +1070,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t { //read base log into memory S32 i = 0; std::ifstream is(base.c_str()); - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { base_data[i++] = cur; } @@ -1083,7 +1083,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t { //read current log into memory S32 i = 0; std::ifstream is(target.c_str()); - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { cur_data[i++] = cur; @@ -1374,7 +1374,7 @@ LLSD LLFastTimerView::analyzePerformanceLogDefault(std::istream& is) stats_map_t time_stats; stats_map_t sample_stats; - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter) { diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 0290e7cdf0..752aba5e16 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -404,8 +404,7 @@ public: } else { - llinfos << "avatar picker failed " << status - << " reason " << reason << llendl; + llwarns << "avatar picker failed [status:" << status << "]: " << content << llendl; } } diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index c7fab2573f..0cde878055 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -75,7 +75,7 @@ namespace { public: /* virtual */ - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason) { sConsoleReplySignal(UNABLE_TO_SEND_COMMAND); } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index a36021f971..4a9ea5acf0 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -756,9 +756,10 @@ class ConsoleRequestResponder : public LLHTTPClient::Responder { public: /*virtual*/ - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "requesting mesh_rez_enabled failed" << llendl; + llwarns << "ConsoleRequestResponder error requesting mesh_rez_enabled [status:" + << status << "]: " << content << llendl; } }; @@ -768,9 +769,10 @@ class ConsoleUpdateResponder : public LLHTTPClient::Responder { public: /* virtual */ - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Updating mesh enabled region setting failed" << llendl; + llwarns << "ConsoleRequestResponder error updating mesh enabled region setting [status:" + << status << "]: " << content << llendl; } }; @@ -2207,10 +2209,10 @@ public: } // if we get an error response - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "LLEstateChangeInfoResponder::error " - << status << ": " << reason << llendl; + llinfos << "LLEstateChangeInfoResponder::error [status:" + << status << "]: " << content << llendl; } private: LLHandle mpPanel; diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 86bd15b217..685b566fa8 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -695,7 +695,7 @@ class LLUserReportResponder : public LLHTTPClient::Responder public: LLUserReportResponder(): LLHTTPClient::Responder() {} - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { // *TODO do some user messaging here LLUploadDialog::modalUploadFinished(); diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index a50907601c..17c34f1da0 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -221,9 +221,9 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content) } } -void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsRegionInfoResponder error [status:" << status << "]: " << content << llendl; } void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) @@ -308,9 +308,9 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) } } -void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionSummaryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsRegionSummaryResponder error [status:" << status << "]: " << content << llendl; } void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref) @@ -417,9 +417,9 @@ result (map) } } -void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionDetailsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsRegionDetailsResponder error [status:" << status << "]: " << content << llendl; } void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) @@ -513,9 +513,9 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) } } -void fetchScriptLimitsAttachmentInfoResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsAttachmentInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsAttachmentInfoResponder error [status:" << status << "]: " << content << llendl; } ///---------------------------------------------------------------------------- diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 9bcfa5fe14..f8732ef94b 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -89,7 +89,7 @@ class fetchScriptLimitsRegionInfoResponder: public LLHTTPClient::Responder fetchScriptLimitsRegionInfoResponder(const LLSD& info) : mInfo(info) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: LLSD mInfo; @@ -101,7 +101,7 @@ class fetchScriptLimitsRegionSummaryResponder: public LLHTTPClient::Responder fetchScriptLimitsRegionSummaryResponder(const LLSD& info) : mInfo(info) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: LLSD mInfo; @@ -113,7 +113,7 @@ class fetchScriptLimitsRegionDetailsResponder: public LLHTTPClient::Responder fetchScriptLimitsRegionDetailsResponder(const LLSD& info) : mInfo(info) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: LLSD mInfo; @@ -125,7 +125,7 @@ class fetchScriptLimitsAttachmentInfoResponder: public LLHTTPClient::Responder fetchScriptLimitsAttachmentInfoResponder() {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: }; diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 81eb1d397e..cbd844cdac 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1847,14 +1847,15 @@ public: GroupMemberDataResponder() {} virtual ~GroupMemberDataResponder() {} virtual void result(const LLSD& pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); private: LLSD mMemberData; }; -void GroupMemberDataResponder::error(U32 pStatus, const std::string& pReason) +void GroupMemberDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { - LL_WARNS("GrpMgr") << "Error receiving group member data." << LL_ENDL; + LL_WARNS("GrpMgr") << "Error receiving group member data [status:" + << pStatus << "]: " << pContent << LL_ENDL; } void GroupMemberDataResponder::result(const LLSD& content) diff --git a/indra/newview/llhomelocationresponder.cpp b/indra/newview/llhomelocationresponder.cpp index 4850d18d99..37428c4a44 100644 --- a/indra/newview/llhomelocationresponder.cpp +++ b/indra/newview/llhomelocationresponder.cpp @@ -97,7 +97,7 @@ void LLHomeLocationResponder::result( const LLSD& content ) } } -void LLHomeLocationResponder::error( U32 status, const std::string& reason ) +void LLHomeLocationResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content ) { - llinfos << "received error(" << reason << ")" << llendl; + llwarns << "LLHomeLocationResponder error [status:" << status << "]: " << content << llendl; } diff --git a/indra/newview/llhomelocationresponder.h b/indra/newview/llhomelocationresponder.h index d640b9c894..9bf4b12c4e 100644 --- a/indra/newview/llhomelocationresponder.h +++ b/indra/newview/llhomelocationresponder.h @@ -36,7 +36,7 @@ class LLHomeLocationResponder : public LLHTTPClient::Responder { virtual void result( const LLSD& content ); - virtual void error( U32 status, const std::string& reason ); + virtual void errorWithContent( U32 status, const std::string& reason, const LLSD& content ); }; #endif diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 63eedcdfea..fff178f8fe 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -985,9 +985,10 @@ public: mSessionID = session_id; } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "Error inviting all agents to session" << llendl; + llwarns << "Error inviting all agents to session [status:" + << statusNum << "]: " << content << llendl; //throw something back to the viewer here? } diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 0250af6a0e..1dab0e67bf 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -394,9 +394,10 @@ public: mSessionID = session_id; } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "Error inviting all agents to session" << llendl; + llwarns << "Error inviting all agents to session [status:" + << statusNum << "]: " << content << llendl; //throw something back to the viewer here? } diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 57373704ef..20b33c5d08 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1227,7 +1227,7 @@ public: mAgents = agents_to_invite; } - virtual void error(U32 statusNum, const std::string& reason) + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { //try an "old school" way. if ( statusNum == 400 ) @@ -1239,6 +1239,9 @@ public: mAgents); } + llwarns << "LLStartConferenceChatResponder error [status:" + << statusNum << "]: " << content << llendl; + //else throw an error back to the client? //in theory we should have just have these error strings //etc. set up in this file as opposed to the IMMgr, @@ -1384,8 +1387,10 @@ public: } } - void error(U32 statusNum, const std::string& reason) - { + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) + { + llwarns << "LLViewerChatterBoxInvitationAcceptResponder error [status:" + << statusNum << "]: " << content << llendl; //throw something back to the viewer here? if ( gIMMgr ) { diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 17d0b0ffbb..aafc43b02d 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -501,9 +501,9 @@ void LLInspectAvatar::toggleSelectedVoice(bool enabled) mSessionID = session_id; } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << status << ": " << reason << llendl; + llwarns << "MuteVoiceResponder error [status:" << status << "]: " << content << llendl; if ( gIMMgr ) { diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index ac1f40b486..99e72cdb22 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -424,9 +424,10 @@ public: { } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("InvAPI") << "CreateInventoryCategory failed. status = " << status << ", reasion = \"" << reason << "\"" << LL_ENDL; + LL_WARNS("InvAPI") << "CreateInventoryCategory failed [status:" + << status << "]: " << content << LL_ENDL; } virtual void result(const LLSD& content) @@ -1399,10 +1400,9 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) } //If we get back an error (not found, etc...), handle it here -void LLInventoryModel::fetchInventoryResponder::error(U32 status, const std::string& reason) +void LLInventoryModel::fetchInventoryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "fetchInventory::error " - << status << ": " << reason << llendl; + llwarns << "fetchInventory error [status:" << status << "]: " << content << llendl; gInventory.notifyObservers(); } diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 8382e875b4..dfdd237c95 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -84,7 +84,7 @@ public: public: fetchInventoryResponder(const LLSD& request_sd) : mRequestSD(request_sd) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: LLSD mRequestSD; }; diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index 024d34519f..f2b39e7186 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -366,7 +366,7 @@ class LLInventoryModelFetchItemResponder : public LLInventoryModel::fetchInvento public: LLInventoryModelFetchItemResponder(const LLSD& request_sd) : LLInventoryModel::fetchInventoryResponder(request_sd) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); }; void LLInventoryModelFetchItemResponder::result( const LLSD& content ) @@ -375,9 +375,9 @@ void LLInventoryModelFetchItemResponder::result( const LLSD& content ) LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1); } -void LLInventoryModelFetchItemResponder::error( U32 status, const std::string& reason ) +void LLInventoryModelFetchItemResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content ) { - LLInventoryModel::fetchInventoryResponder::error(status, reason); + LLInventoryModel::fetchInventoryResponder::errorWithContent(status, reason, content); LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1); } @@ -391,7 +391,7 @@ public: {}; //LLInventoryModelFetchDescendentsResponder() {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: BOOL getIsRecursive(const LLUUID& cat_id) const; private: @@ -529,12 +529,12 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content) } // If we get back an error (not found, etc...), handle it here. -void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason) +void LLInventoryModelFetchDescendentsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance(); - llinfos << "LLInventoryModelFetchDescendentsResponder::error " - << status << ": " << reason << llendl; + llinfos << "LLInventoryModelFetchDescendentsResponder::error [status:" + << status << "]: " << content << llendl; fetcher->incrFetchCount(-1); diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp index 31038b4aac..e3b46d5d2f 100644 --- a/indra/newview/llmediadataclient.cpp +++ b/indra/newview/llmediadataclient.cpp @@ -564,7 +564,7 @@ LLMediaDataClient::Responder::Responder(const request_ptr_t &request) } /*virtual*/ -void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) +void LLMediaDataClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { mRequest->stopTracking(); @@ -596,8 +596,8 @@ void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) } else { - std::string msg = boost::lexical_cast(status) + ": " + reason; - LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL; + LL_WARNS("LLMediaDataClient") << *mRequest << " http error [status:" + << status << "]:" << content << ")" << LL_ENDL; } } @@ -1003,7 +1003,7 @@ LLMediaDataClient::Responder *LLObjectMediaNavigateClient::RequestNavigate::crea } /*virtual*/ -void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason) +void LLObjectMediaNavigateClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { getRequest()->stopTracking(); @@ -1017,7 +1017,7 @@ void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string // class if (status == HTTP_SERVICE_UNAVAILABLE) { - LLMediaDataClient::Responder::error(status, reason); + LLMediaDataClient::Responder::errorWithContent(status, reason, content); } else { diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h index ab90915c55..89e20a28d0 100644 --- a/indra/newview/llmediadataclient.h +++ b/indra/newview/llmediadataclient.h @@ -195,7 +195,7 @@ protected: public: Responder(const request_ptr_t &request); //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); //If we get back a normal response, handle it here. Default just logs it. virtual void result(const LLSD& content); @@ -400,7 +400,7 @@ protected: public: Responder(const request_ptr_t &request) : LLMediaDataClient::Responder(request) {} - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD &content); private: void mediaNavigateBounceBack(); diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index 2dd01e931e..c277359133 100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp @@ -108,7 +108,7 @@ public: virtual ~NavMeshStatusResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -130,7 +130,7 @@ public: virtual ~NavMeshResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -151,7 +151,7 @@ public: virtual ~AgentStateResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -170,7 +170,7 @@ public: virtual ~NavMeshRebakeResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -190,9 +190,11 @@ public: virtual ~LinksetsResponder(); void handleObjectLinksetsResult(const LLSD &pContent); - void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL); + void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL); void handleTerrainLinksetsResult(const LLSD &pContent); - void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL); + void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL); protected: @@ -230,7 +232,7 @@ public: virtual ~ObjectLinksetsResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string &pReason); + virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent); protected: @@ -250,7 +252,7 @@ public: virtual ~TerrainLinksetsResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string &pReason); + virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent); protected: @@ -270,7 +272,7 @@ public: virtual ~CharactersResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string &pReason); + virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent); protected: @@ -800,9 +802,9 @@ void NavMeshStatusResponder::result(const LLSD &pContent) LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly); } -void NavMeshStatusResponder::error(U32 pStatus, const std::string& pReason) +void NavMeshStatusResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "NavMeshStatusResponder error [status:" << pStatus << "]: " << pContent << llendl; LLPathfindingNavMeshStatus navMeshStatus(mRegionUUID); LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly); } @@ -828,9 +830,9 @@ void NavMeshResponder::result(const LLSD &pContent) mNavMeshPtr->handleNavMeshResult(pContent, mNavMeshVersion); } -void NavMeshResponder::error(U32 pStatus, const std::string& pReason) +void NavMeshResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { - mNavMeshPtr->handleNavMeshError(pStatus, pReason, mCapabilityURL, mNavMeshVersion); + mNavMeshPtr->handleNavMeshError(pStatus, pReason, pContent, mCapabilityURL, mNavMeshVersion); } //--------------------------------------------------------------------------- @@ -855,9 +857,9 @@ void AgentStateResponder::result(const LLSD &pContent) LLPathfindingManager::getInstance()->handleAgentState(canRebakeRegion); } -void AgentStateResponder::error(U32 pStatus, const std::string &pReason) +void AgentStateResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "AgentStateResponder error [status:" << pStatus << "]: " << pContent << llendl; LLPathfindingManager::getInstance()->handleAgentState(FALSE); } @@ -881,9 +883,9 @@ void NavMeshRebakeResponder::result(const LLSD &pContent) mRebakeNavMeshCallback(true); } -void NavMeshRebakeResponder::error(U32 pStatus, const std::string &pReason) +void NavMeshRebakeResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "NavMeshRebakeResponder error [status:" << pStatus << "]: " << pContent << llendl; mRebakeNavMeshCallback(false); } @@ -916,9 +918,11 @@ void LinksetsResponder::handleObjectLinksetsResult(const LLSD &pContent) } } -void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL) +void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL) { - llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "LinksetsResponder object linksets error with request to URL '" << pURL << "' [status:" + << pStatus << "]: " << pContent << llendl; mObjectMessagingState = kReceivedError; if (mTerrainMessagingState != kWaiting) { @@ -937,8 +941,11 @@ void LinksetsResponder::handleTerrainLinksetsResult(const LLSD &pContent) } } -void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL) +void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL) { + llwarns << "LinksetsResponder terrain linksets error with request to URL '" << pURL << "' [status:" + << pStatus << "]: " << pContent << llendl; mTerrainMessagingState = kReceivedError; if (mObjectMessagingState != kWaiting) { @@ -988,9 +995,9 @@ void ObjectLinksetsResponder::result(const LLSD &pContent) mLinksetsResponsderPtr->handleObjectLinksetsResult(pContent); } -void ObjectLinksetsResponder::error(U32 pStatus, const std::string &pReason) +void ObjectLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, mCapabilityURL); + mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, pContent, mCapabilityURL); } //--------------------------------------------------------------------------- @@ -1013,9 +1020,9 @@ void TerrainLinksetsResponder::result(const LLSD &pContent) mLinksetsResponsderPtr->handleTerrainLinksetsResult(pContent); } -void TerrainLinksetsResponder::error(U32 pStatus, const std::string &pReason) +void TerrainLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, mCapabilityURL); + mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, pContent, mCapabilityURL); } //--------------------------------------------------------------------------- @@ -1040,9 +1047,9 @@ void CharactersResponder::result(const LLSD &pContent) mCharactersCallback(mRequestId, LLPathfindingManager::kRequestCompleted, characterListPtr); } -void CharactersResponder::error(U32 pStatus, const std::string &pReason) +void CharactersResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "CharactersResponder error [status:" << pStatus << "]: " << pContent << llendl; LLPathfindingObjectListPtr characterListPtr = LLPathfindingObjectListPtr(new LLPathfindingCharacterList()); mCharactersCallback(mRequestId, LLPathfindingManager::kRequestError, characterListPtr); diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp index e01dd3a152..0c23e5ac92 100644 --- a/indra/newview/llpathfindingnavmesh.cpp +++ b/indra/newview/llpathfindingnavmesh.cpp @@ -184,9 +184,10 @@ void LLPathfindingNavMesh::handleNavMeshError() setRequestStatus(kNavMeshRequestError); } -void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion) +void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion) { - llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "LLPathfindingNavMesh error with request to URL '" << pURL << "' [status:" + << pStatus << "]: " << pContent << llendl; if (mNavMeshStatus.getVersion() == pNavMeshVersion) { handleNavMeshError(); diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h index 7a844f54ce..b872ccad7c 100644 --- a/indra/newview/llpathfindingnavmesh.h +++ b/indra/newview/llpathfindingnavmesh.h @@ -74,7 +74,7 @@ public: void handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion); void handleNavMeshNotEnabled(); void handleNavMeshError(); - void handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion); + void handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion); protected: diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp index 93bf8b2328..1390000fc5 100644 --- a/indra/newview/llproductinforequest.cpp +++ b/indra/newview/llproductinforequest.cpp @@ -43,10 +43,10 @@ public: } //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "LLProductInfoRequest::error(" - << status << ": " << reason << ")" << llendl; + llwarns << "LLProductInfoRequest error [status:" + << status << ":] " << content << llendl; } }; diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp index 3862dac340..500dec7ee5 100644 --- a/indra/newview/llremoteparcelrequest.cpp +++ b/indra/newview/llremoteparcelrequest.cpp @@ -62,10 +62,10 @@ void LLRemoteParcelRequestResponder::result(const LLSD& content) //If we get back an error (not found, etc...), handle it here //virtual -void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason) +void LLRemoteParcelRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "LLRemoteParcelRequest::error(" - << status << ": " << reason << ")" << llendl; + llwarns << "LLRemoteParcelRequest error [status:" + << status << "]: " << content << llendl; // Panel inspecting the information may be closed and destroyed // before this response is received. diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index 74cf1616df..b87056573b 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -44,7 +44,7 @@ public: /*virtual*/ void result(const LLSD& content); //If we get back an error (not found, etc...), handle it here - /*virtual*/ void error(U32 status, const std::string& reason); + /*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: LLHandle mObserverHandle; diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 1c7c6450c7..890bc0f42d 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -726,9 +726,9 @@ public: mSessionID = session_id; } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << status << ": " << reason << llendl; + llwarns << "ModerationResponder error [status:" << status << "]: " << content << llendl; if ( gIMMgr ) { diff --git a/indra/newview/lluploadfloaterobservers.cpp b/indra/newview/lluploadfloaterobservers.cpp index 5a6a17fbca..1d777b3f7f 100644 --- a/indra/newview/lluploadfloaterobservers.cpp +++ b/indra/newview/lluploadfloaterobservers.cpp @@ -33,9 +33,10 @@ LLUploadModelPremissionsResponder::LLUploadModelPremissionsResponder(const LLHan { } -void LLUploadModelPremissionsResponder::error(U32 status, const std::string& reason) +void LLUploadModelPremissionsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "LLUploadModelPremissionsResponder::error("<< status << ": " << reason << ")" << llendl; + llwarns << "LLUploadModelPremissionsResponder error [status:" + << status << "]: " << content << llendl; LLUploadPermissionsObserver* observer = mObserverHandle.get(); diff --git a/indra/newview/lluploadfloaterobservers.h b/indra/newview/lluploadfloaterobservers.h index 79aad282d7..b43ddb44d9 100644 --- a/indra/newview/lluploadfloaterobservers.h +++ b/indra/newview/lluploadfloaterobservers.h @@ -86,7 +86,7 @@ public: LLUploadModelPremissionsResponder(const LLHandle& observer); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); void result(const LLSD& content); diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp index 5741fab29a..1ac6a90894 100644 --- a/indra/newview/llviewerdisplayname.cpp +++ b/indra/newview/llviewerdisplayname.cpp @@ -59,8 +59,10 @@ class LLSetDisplayNameResponder : public LLHTTPClient::Responder { public: // only care about errors - /*virtual*/ void error(U32 status, const std::string& reason) + /*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { + llwarns << "LLSetDisplayNameResponder error [status:" + << status << "]: " << content << llendl; LLViewerDisplayName::sSetDisplayNameSignal(false, "", LLSD()); LLViewerDisplayName::sSetDisplayNameSignal.disconnect_all_slots(); } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index eec44c7a74..0561e731e7 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -691,12 +691,12 @@ public: } } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { llwarns << "Transport error requesting object cost " - << "HTTP status: " << statusNum << ", reason: " - << reason << "." << llendl; + << "[status: " << statusNum << "]: " + << content << llendl; // TODO*: Error message to user // For now just clear the request from the pending list @@ -780,12 +780,12 @@ public: } } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { llwarns << "Transport error requesting object physics flags " - << "HTTP status: " << statusNum << ", reason: " - << reason << "." << llendl; + << "[status: " << statusNum << "]: " + << content << llendl; // TODO*: Error message to user // For now just clear the request from the pending list diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index e940dda010..b8b53aa6e4 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -210,9 +210,9 @@ public: virtual ~BaseCapabilitiesComplete() { } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - LL_WARNS2("AppInit", "Capabilities") << statusNum << ": " << reason << LL_ENDL; + LL_WARNS2("AppInit", "Capabilities") << "[status:" << statusNum << ":] " << content << LL_ENDL; LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle); if (regionp) { @@ -278,8 +278,11 @@ public: virtual ~BaseCapabilitiesCompleteTracker() { } - void error(U32 statusNum, const std::string& reason) - { } + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) + { + llwarns << "BaseCapabilitiesCompleteTracker error [status:" + << statusNum << "]: " << content << llendl; + } void result(const LLSD& content) { @@ -1731,9 +1734,9 @@ public: { } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - LL_WARNS2("AppInit", "SimulatorFeatures") << statusNum << ": " << reason << LL_ENDL; + LL_WARNS2("AppInit", "SimulatorFeatures") << "[status:" << statusNum << "]: " << content << LL_ENDL; retry(); } diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 17bb03b889..4ed01f36ab 100755 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -530,10 +530,10 @@ class ViewerStatsResponder : public LLHTTPClient::Responder public: ViewerStatsResponder() { } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "ViewerStatsResponder::error " << statusNum << " " - << reason << llendl; + llwarns << "ViewerStatsResponder error [status:" << statusNum << "]: " + << content << llendl; } void result(const LLSD& content) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 3605383c5c..9be1de4f0e 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2264,7 +2264,7 @@ public: else { LL_WARNS("Avatar") << "Failed " << status << " reason " << reason << LL_ENDL; - error(status,reason); + errorWithContent(status,reason,content); } } @@ -2440,11 +2440,12 @@ public: } // Error - /*virtual*/ void error(U32 status, const std::string& reason) + /*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { if (isAgentAvatarValid()) { - LL_DEBUGS("Avatar") << "failed, will rebake" << llendl; + LL_DEBUGS("Avatar") << "failed, will rebake [status:" + << status << "]: " << content << llendl; forceAppearanceUpdate(); } } diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index bd12328a6b..181735ee30 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -56,7 +56,8 @@ class LLVoiceCallCapResponder : public LLHTTPClient::Responder public: LLVoiceCallCapResponder(const LLUUID& session_id) : mSessionID(session_id) {}; - virtual void error(U32 status, const std::string& reason); // called with bad status codes + // called with bad status codes + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); private: @@ -64,11 +65,10 @@ private: }; -void LLVoiceCallCapResponder::error(U32 status, const std::string& reason) +void LLVoiceCallCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("Voice") << "LLVoiceCallCapResponder::error(" - << status << ": " << reason << ")" - << LL_ENDL; + LL_WARNS("Voice") << "LLVoiceCallCapResponder error [status:" + << status << "]: " << content << LL_ENDL; LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mSessionID); if ( channelp ) { diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index db0fc3dca7..e112c589e9 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -126,17 +126,18 @@ public: mRetries = retries; } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { + LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, " + << ( (mRetries > 0) ? "retrying" : "too many retries (giving up)" ) + << status << "]: " << content << LL_ENDL; + if ( mRetries > 0 ) { - LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, retrying. status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; - LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision( - mRetries - 1); + LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision(mRetries - 1); } else { - LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up). status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; LLVivoxVoiceClient::getInstance()->giveUp(); } } @@ -195,18 +196,18 @@ class LLVivoxVoiceClientCapResponder : public LLHTTPClient::Responder public: LLVivoxVoiceClientCapResponder(LLVivoxVoiceClient::state requesting_state) : mRequestingState(requesting_state) {}; - virtual void error(U32 status, const std::string& reason); // called with bad status codes + // called with bad status codes + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); private: LLVivoxVoiceClient::state mRequestingState; // state }; -void LLVivoxVoiceClientCapResponder::error(U32 status, const std::string& reason) +void LLVivoxVoiceClientCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder::error(" - << status << ": " << reason << ")" - << LL_ENDL; + LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder error [status:" + << status << "]: " << content << LL_ENDL; LLVivoxVoiceClient::getInstance()->sessionTerminate(); } diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp index 43b1a320c3..3a80051b9b 100644 --- a/indra/newview/llwebsharing.cpp +++ b/indra/newview/llwebsharing.cpp @@ -68,9 +68,9 @@ public: } } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; } virtual void result(const LLSD& content) @@ -99,7 +99,7 @@ public: /// Left empty to override the default LLSD parsing behaviour. } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { if (HTTP_UNAUTHORIZED == status) { @@ -108,7 +108,7 @@ public: } else { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; LLWebSharing::instance().retryOpenIDAuth(); } @@ -152,9 +152,9 @@ public: } } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; LLWebSharing::instance().retryOpenIDAuth(); } @@ -221,9 +221,9 @@ public: } } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; } virtual void result(const LLSD& content) diff --git a/indra/newview/llwlhandlers.cpp b/indra/newview/llwlhandlers.cpp index be3e3ff30e..93eba5b604 100644 --- a/indra/newview/llwlhandlers.cpp +++ b/indra/newview/llwlhandlers.cpp @@ -121,9 +121,11 @@ LLEnvironmentRequestResponder::LLEnvironmentRequestResponder() LLEnvManagerNew::getInstance()->onRegionSettingsResponse(unvalidated_content); } -/*virtual*/ void LLEnvironmentRequestResponder::error(U32 status, const std::string& reason) +/*virtual*/ +void LLEnvironmentRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_INFOS("WindlightCaps") << "Got an error, not using region windlight..." << LL_ENDL; + LL_INFOS("WindlightCaps") << "Got an error, not using region windlight... [status:" + << status << "]: " << content << LL_ENDL; LLEnvManagerNew::getInstance()->onRegionSettingsResponse(LLSD()); } @@ -190,14 +192,15 @@ bool LLEnvironmentApply::initiateRequest(const LLSD& content) LLEnvManagerNew::instance().onRegionSettingsApplyResponse(false); } } -/*virtual*/ void LLEnvironmentApplyResponder::error(U32 status, const std::string& reason) +/*virtual*/ +void LLEnvironmentApplyResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - std::stringstream msg; - msg << reason << " (Code " << status << ")"; - - LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region! Reason: " << msg << LL_ENDL; + LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region! [status:" + << status << "]: " << content << LL_ENDL; LLSD args(LLSD::emptyMap()); + std::stringstream msg; + msg << reason << " (Code " << status << ")"; args["FAIL_REASON"] = msg.str(); LLNotificationsUtil::add("WLRegionApplyFail", args); } diff --git a/indra/newview/llwlhandlers.h b/indra/newview/llwlhandlers.h index 23558876da..598ce6d52a 100644 --- a/indra/newview/llwlhandlers.h +++ b/indra/newview/llwlhandlers.h @@ -47,7 +47,7 @@ class LLEnvironmentRequestResponder: public LLHTTPClient::Responder LOG_CLASS(LLEnvironmentRequestResponder); public: virtual void result(const LLSD& content); - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); private: friend class LLEnvironmentRequest; @@ -89,7 +89,8 @@ public: */ virtual void result(const LLSD& content); - virtual void error(U32 status, const std::string& reason); // non-200 errors only + // non-200 errors only + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); private: friend class LLEnvironmentApply; diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp index 0254c5881f..41cb344808 100644 --- a/indra/newview/tests/llmediadataclient_test.cpp +++ b/indra/newview/tests/llmediadataclient_test.cpp @@ -126,7 +126,9 @@ void LLHTTPClient::post( result[LLTextureEntry::OBJECT_ID_KEY] = body[LLTextureEntry::OBJECT_ID_KEY]; if ( url == FAKE_OBJECT_MEDIA_CAP_URL_503 ) { - responder->error(HTTP_SERVICE_UNAVAILABLE, "fake reason"); + LLSD content; + content["reason"] = "fake reason"; + responder->errorWithContent(HTTP_SERVICE_UNAVAILABLE, "fake reason", content); return; } else if (url == FAKE_OBJECT_MEDIA_NAVIGATE_CAP_URL_ERROR) From 24503f480fd929691e20b8ad253f3e8513fe15c2 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 13:45:05 +0100 Subject: [PATCH 09/38] Fixed header includes uniqueness --- indra/newview/fsareasearch.h | 5 +++++ indra/newview/fsdata.h | 5 +++++ indra/newview/fsfloaterposestand.h | 4 ++-- indra/newview/fskeywords.h | 4 ++++ indra/newview/fslslpreproc.h | 5 +++++ indra/newview/fspanelprefs.h | 11 ++++++++--- indra/newview/fspose.h | 10 +++++----- indra/newview/fswsassetblacklist.h | 5 +++++ indra/newview/kcwlinterface.h | 5 +++++ indra/newview/lggbeamcolormapfloater.h | 4 ++++ indra/newview/lggbeammapfloater.h | 5 +++++ indra/newview/lggbeammaps.h | 5 +++++ indra/newview/lggbeamscolors.h | 6 +++--- indra/newview/lggcontactsets.h | 6 +++--- indra/newview/lggcontactsetsfloater.h | 6 +++--- 15 files changed, 67 insertions(+), 19 deletions(-) diff --git a/indra/newview/fsareasearch.h b/indra/newview/fsareasearch.h index 88e75eac77..fb9a9dacad 100644 --- a/indra/newview/fsareasearch.h +++ b/indra/newview/fsareasearch.h @@ -25,6 +25,9 @@ * $/LicenseInfo$ */ +#ifndef FS_AREASEARCH_H +#define FS_AREASEARCH_H + #include "llfloater.h" #include "llsingleton.h" #include "lluuid.h" @@ -389,3 +392,5 @@ public: private: FSAreaSearch* mFSAreaSearch; }; + +#endif // FS_AREASEARCH_H \ No newline at end of file diff --git a/indra/newview/fsdata.h b/indra/newview/fsdata.h index 3269e70cad..f6e5cc16b7 100644 --- a/indra/newview/fsdata.h +++ b/indra/newview/fsdata.h @@ -29,6 +29,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef FS_DATA_H +#define FS_DATA_H + #include #include #include @@ -100,3 +103,5 @@ private: FSDataAgent mSupportAgent; std::map mSupportAgentList; }; + +#endif // FS_DATA_H \ No newline at end of file diff --git a/indra/newview/fsfloaterposestand.h b/indra/newview/fsfloaterposestand.h index c4bb4dcd11..d538062d09 100644 --- a/indra/newview/fsfloaterposestand.h +++ b/indra/newview/fsfloaterposestand.h @@ -10,8 +10,8 @@ * ---------------------------------------------------------------------------- */ -#ifndef FS_FSFLOATERPOSESTAND_H -#define FS_FSFLOATERPOSESTAND_H +#ifndef FS_FLOATERPOSESTAND_H +#define FS_FLOATERPOSESTAND_H #include "llfloater.h" #include "llcombobox.h" diff --git a/indra/newview/fskeywords.h b/indra/newview/fskeywords.h index e35a5f33a5..b62b04d885 100644 --- a/indra/newview/fskeywords.h +++ b/indra/newview/fskeywords.h @@ -1,3 +1,5 @@ +#ifndef FS_KEYWORDS_H +#define FS_KEYWORDS_H #include "llsingleton.h" #include "llstring.h" @@ -20,3 +22,5 @@ private: }; + +#endif // FS_KEYWORDS_H \ No newline at end of file diff --git a/indra/newview/fslslpreproc.h b/indra/newview/fslslpreproc.h index ac27548ce2..7e03ab513b 100644 --- a/indra/newview/fslslpreproc.h +++ b/indra/newview/fslslpreproc.h @@ -29,6 +29,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef FS_LSLPREPROC_H +#define FS_LSLPREPROC_H + #include "llviewerprecompiledheaders.h" #include "llpreviewscript.h" @@ -83,3 +86,5 @@ public: BOOL mHDDInclude; std::string mMainScriptName; }; + +#endif // FS_LSLPREPROC_H \ No newline at end of file diff --git a/indra/newview/fspanelprefs.h b/indra/newview/fspanelprefs.h index d5e2e136ea..654588830c 100644 --- a/indra/newview/fspanelprefs.h +++ b/indra/newview/fspanelprefs.h @@ -1,9 +1,13 @@ /*${License blank}*/ -#ifndef panel_prefs_firestorm -#define panel_prefs_firestorm + +#ifndef FS_PANELPREFS_H +#define FS_PANELPREFS_H + #include "llfloaterpreference.h" #include "lllineeditor.h" + class LLLineEditor; + class PanelPreferenceFirestorm : public LLPanelPreference { public: @@ -30,4 +34,5 @@ protected: LLComboBox* m_ColorClienttags; LLComboBox* m_ClientTagsVisibility; }; -#endif + +#endif // FS_PANELPREFS_H diff --git a/indra/newview/fspose.h b/indra/newview/fspose.h index e37698a0b1..77b74599e7 100644 --- a/indra/newview/fspose.h +++ b/indra/newview/fspose.h @@ -10,10 +10,8 @@ * ---------------------------------------------------------------------------- */ -#ifndef FS_FSPOSE_H -#define FS_FSPOSE_H - -#endif // FS_FSPOSE_H +#ifndef FS_POSE_H +#define FS_POSE_H #include "llsingleton.h" @@ -29,4 +27,6 @@ protected: ~FSPose(); private: LLUUID mCurrentPose; -}; \ No newline at end of file +}; + +#endif // FS_POSE_H diff --git a/indra/newview/fswsassetblacklist.h b/indra/newview/fswsassetblacklist.h index 6b5ede23e9..972e629162 100644 --- a/indra/newview/fswsassetblacklist.h +++ b/indra/newview/fswsassetblacklist.h @@ -25,6 +25,9 @@ * $/LicenseInfo$ */ +#ifndef FS_WSASSETBLACKLIST_H +#define FS_WSASSETBLACKLIST_H + #include "llviewerprecompiledheaders.h" #include "llsingleton.h" #include "llfloater.h" @@ -51,3 +54,5 @@ private: static std::string blacklist_file_name; static BlacklistMAP BlacklistIDs; }; + +#endif // FS_WSASSETBLACKLIST_H \ No newline at end of file diff --git a/indra/newview/kcwlinterface.h b/indra/newview/kcwlinterface.h index 9554b408f9..bde3c16af1 100644 --- a/indra/newview/kcwlinterface.h +++ b/indra/newview/kcwlinterface.h @@ -22,6 +22,9 @@ * http://www.firestormviewer.org */ +#ifndef KC_WLINTERFACE_H +#define KC_WLINTERFACE_H + #include "llviewerprecompiledheaders.h" #include "llsingleton.h" #include "lleventtimer.h" @@ -79,3 +82,5 @@ protected: bool mHaveRegionSettings; bool mDisabled; // control bool to clear all states after being disabled }; + +#endif // KC_WLINTERFACE_H \ No newline at end of file diff --git a/indra/newview/lggbeamcolormapfloater.h b/indra/newview/lggbeamcolormapfloater.h index 47aceb16ef..7aa5d3cc51 100644 --- a/indra/newview/lggbeamcolormapfloater.h +++ b/indra/newview/lggbeamcolormapfloater.h @@ -11,6 +11,8 @@ * http://sam.zoy.org/wtfpl/COPYING for more details. */ +#ifndef LGG_BEAMCOLORMAPFLOATER_H +#define LGG_BEAMCOLORMAPFLOATER_H #include "llviewerprecompiledheaders.h" @@ -70,3 +72,5 @@ protected: LLSliderCtrl* mColorSlider; }; + +#endif // LGG_BEAMCOLORMAPFLOATER_H \ No newline at end of file diff --git a/indra/newview/lggbeammapfloater.h b/indra/newview/lggbeammapfloater.h index 4b0be5a51e..a3eb4adb4c 100644 --- a/indra/newview/lggbeammapfloater.h +++ b/indra/newview/lggbeammapfloater.h @@ -11,6 +11,9 @@ * http://sam.zoy.org/wtfpl/COPYING for more details. */ +#ifndef LGG_BEAMMAPFLOATER_H +#define LGG_BEAMMAPFLOATER_H + #include "llviewerprecompiledheaders.h" #include "llagentdata.h" @@ -75,3 +78,5 @@ private: F32 mContextConeOpacity; }; + +#endif // LGG_BEAMMAPFLOATER_H \ No newline at end of file diff --git a/indra/newview/lggbeammaps.h b/indra/newview/lggbeammaps.h index 59ef427a65..60fc74949f 100644 --- a/indra/newview/lggbeammaps.h +++ b/indra/newview/lggbeammaps.h @@ -11,6 +11,9 @@ * http://sam.zoy.org/wtfpl/COPYING for more details. */ +#ifndef LGG_BEAMMAPS_H +#define LGG_BEAMMAPS_H + #include "llhudeffecttrail.h" #include "llviewerprecompiledheaders.h" #include "lggbeamscolors.h" @@ -51,3 +54,5 @@ class lggBeamMaps extern lggBeamMaps gLggBeamMaps; + +#endif // LGG_BEAMMAPS_H \ No newline at end of file diff --git a/indra/newview/lggbeamscolors.h b/indra/newview/lggbeamscolors.h index c01020ea5f..eedd82f501 100644 --- a/indra/newview/lggbeamscolors.h +++ b/indra/newview/lggbeamscolors.h @@ -11,8 +11,8 @@ * http://sam.zoy.org/wtfpl/COPYING for more details. */ -#ifndef LGGBEAMCOLORDATA -#define LGGBEAMCOLORDATA +#ifndef LGG_BEAMSCOLORS_H +#define LGG_BEAMSCOLORS_H #include "llviewerprecompiledheaders.h" @@ -41,4 +41,4 @@ public: // List sorted by name. }; -#endif +#endif // LGG_BEAMSCOLORS_H diff --git a/indra/newview/lggcontactsets.h b/indra/newview/lggcontactsets.h index b98724cdb6..58df7075e4 100644 --- a/indra/newview/lggcontactsets.h +++ b/indra/newview/lggcontactsets.h @@ -16,8 +16,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef LGG_FRIENDS_GROUPS_H -#define LGG_FRIENDS_GROUPS_H +#ifndef LGG_CONTACTSETS_H +#define LGG_CONTACTSETS_H #include "v4color.h" @@ -88,4 +88,4 @@ private: }; -#endif +#endif // LGG_CONTACTSETS_H diff --git a/indra/newview/lggcontactsetsfloater.h b/indra/newview/lggcontactsetsfloater.h index 2794abd89f..bfa76a523f 100644 --- a/indra/newview/lggcontactsetsfloater.h +++ b/indra/newview/lggcontactsetsfloater.h @@ -16,8 +16,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef LGG_FRIENDS_GROUPS_FLOATER_H -#define LGG_FRIENDS_GROUPS_FLOATER_H +#ifndef LGG_CONTACTSETSFLOATER_H +#define LGG_CONTACTSETSFLOATER_H #include "llview.h" #include "llviewerinventory.h" @@ -119,4 +119,4 @@ public: }; -#endif +#endif // LGG_CONTACTSETSFLOATER_H From 7abcf40dec2be03edbad7ebf247823d45452b7c7 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 14:07:56 +0100 Subject: [PATCH 10/38] Fixed some Firestorm license headers --- indra/newview/aoengine.cpp | 1 + indra/newview/aoengine.h | 1 + indra/newview/aoset.cpp | 1 + indra/newview/aoset.h | 1 + indra/newview/fscommon.cpp | 4 ++++ indra/newview/fscommon.h | 4 ++++ indra/newview/fsconsoleutils.cpp | 4 ++++ indra/newview/fsconsoleutils.h | 4 ++++ indra/newview/fscontactsfloater.cpp | 1 + indra/newview/fscontactsfloater.h | 1 + indra/newview/fsfloaterblocklist.cpp | 4 ++++ indra/newview/fsfloaterblocklist.h | 4 ++++ indra/newview/fsfloatergroup.cpp | 4 ++++ indra/newview/fsfloatergroup.h | 4 ++++ indra/newview/fsfloaterplacedetails.cpp | 4 ++++ indra/newview/fsfloaterplacedetails.h | 4 ++++ indra/newview/fsfloaterteleporthistory.cpp | 4 ++++ indra/newview/fsfloaterteleporthistory.h | 4 ++++ indra/newview/fsgrouptitles.cpp | 4 ++++ indra/newview/fsgrouptitles.h | 4 ++++ indra/newview/fslslbridge.cpp | 1 + indra/newview/fslslbridge.h | 2 ++ indra/newview/fslslbridgerequest.cpp | 1 + indra/newview/fslslbridgerequest.h | 1 + indra/newview/fsmoneytracker.cpp | 1 + indra/newview/fsmoneytracker.h | 1 + indra/newview/fsnearbychatvoicemonitor.cpp | 4 ++++ indra/newview/fsnearbychatvoicemonitor.h | 4 ++++ indra/newview/fsslurlcommand.cpp | 4 ++++ indra/newview/fsslurlcommand.h | 4 ++++ indra/newview/kcwlinterface.cpp | 3 ++- indra/newview/kcwlinterface.h | 3 ++- indra/newview/utilitybar.cpp | 1 + indra/newview/utilitybar.h | 1 + 34 files changed, 91 insertions(+), 2 deletions(-) diff --git a/indra/newview/aoengine.cpp b/indra/newview/aoengine.cpp index db5007dcbb..441a3476e3 100644 --- a/indra/newview/aoengine.cpp +++ b/indra/newview/aoengine.cpp @@ -19,6 +19,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/aoengine.h b/indra/newview/aoengine.h index dd17d435b4..ee4ebbf407 100644 --- a/indra/newview/aoengine.h +++ b/indra/newview/aoengine.h @@ -19,6 +19,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #ifndef AOENGINE_H diff --git a/indra/newview/aoset.cpp b/indra/newview/aoset.cpp index 068cc55135..76807926f7 100644 --- a/indra/newview/aoset.cpp +++ b/indra/newview/aoset.cpp @@ -19,6 +19,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/aoset.h b/indra/newview/aoset.h index 555b57f70b..3293975b3d 100644 --- a/indra/newview/aoset.h +++ b/indra/newview/aoset.h @@ -19,6 +19,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #ifndef AOSET_H diff --git a/indra/newview/fscommon.cpp b/indra/newview/fscommon.cpp index 3886e56c49..b38eac6630 100644 --- a/indra/newview/fscommon.cpp +++ b/indra/newview/fscommon.cpp @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fscommon.h b/indra/newview/fscommon.h index 34821136aa..5cdb528ad6 100644 --- a/indra/newview/fscommon.h +++ b/indra/newview/fscommon.h @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_COMMON_H diff --git a/indra/newview/fsconsoleutils.cpp b/indra/newview/fsconsoleutils.cpp index 6be4bea908..e4431efad7 100644 --- a/indra/newview/fsconsoleutils.cpp +++ b/indra/newview/fsconsoleutils.cpp @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsconsoleutils.h b/indra/newview/fsconsoleutils.h index 8c42a42420..f550a56f22 100644 --- a/indra/newview/fsconsoleutils.h +++ b/indra/newview/fsconsoleutils.h @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_CONSOLEUTILS_H diff --git a/indra/newview/fscontactsfloater.cpp b/indra/newview/fscontactsfloater.cpp index e760b3dfa0..576a963dec 100644 --- a/indra/newview/fscontactsfloater.cpp +++ b/indra/newview/fscontactsfloater.cpp @@ -21,6 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org * $/LicenseInfo$ */ diff --git a/indra/newview/fscontactsfloater.h b/indra/newview/fscontactsfloater.h index 0a3e6dfba5..ac439ac567 100644 --- a/indra/newview/fscontactsfloater.h +++ b/indra/newview/fscontactsfloater.h @@ -21,6 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org * $/LicenseInfo$ */ diff --git a/indra/newview/fsfloaterblocklist.cpp b/indra/newview/fsfloaterblocklist.cpp index 9f995511b8..902ab20494 100644 --- a/indra/newview/fsfloaterblocklist.cpp +++ b/indra/newview/fsfloaterblocklist.cpp @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsfloaterblocklist.h b/indra/newview/fsfloaterblocklist.h index 291f529c86..572a8d8425 100644 --- a/indra/newview/fsfloaterblocklist.h +++ b/indra/newview/fsfloaterblocklist.h @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_FLOATERBLOCKLIST_H diff --git a/indra/newview/fsfloatergroup.cpp b/indra/newview/fsfloatergroup.cpp index ab16312b5d..562d0777e7 100644 --- a/indra/newview/fsfloatergroup.cpp +++ b/indra/newview/fsfloatergroup.cpp @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsfloatergroup.h b/indra/newview/fsfloatergroup.h index 597bc4a9d0..a8d5e47fb5 100644 --- a/indra/newview/fsfloatergroup.h +++ b/indra/newview/fsfloatergroup.h @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_FLOATERGROUP_H diff --git a/indra/newview/fsfloaterplacedetails.cpp b/indra/newview/fsfloaterplacedetails.cpp index b6db59ad94..2f4915a329 100644 --- a/indra/newview/fsfloaterplacedetails.cpp +++ b/indra/newview/fsfloaterplacedetails.cpp @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsfloaterplacedetails.h b/indra/newview/fsfloaterplacedetails.h index e574f5e1ba..cdb7649cc8 100644 --- a/indra/newview/fsfloaterplacedetails.h +++ b/indra/newview/fsfloaterplacedetails.h @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_FLOATERPLACEDETAILS_H diff --git a/indra/newview/fsfloaterteleporthistory.cpp b/indra/newview/fsfloaterteleporthistory.cpp index 7e14a98689..da836793fc 100644 --- a/indra/newview/fsfloaterteleporthistory.cpp +++ b/indra/newview/fsfloaterteleporthistory.cpp @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsfloaterteleporthistory.h b/indra/newview/fsfloaterteleporthistory.h index fd732f4bae..4933795992 100644 --- a/indra/newview/fsfloaterteleporthistory.h +++ b/indra/newview/fsfloaterteleporthistory.h @@ -19,6 +19,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_FLOATERTELEPORTHISTORY_H diff --git a/indra/newview/fsgrouptitles.cpp b/indra/newview/fsgrouptitles.cpp index 72484fb57b..76b11399de 100644 --- a/indra/newview/fsgrouptitles.cpp +++ b/indra/newview/fsgrouptitles.cpp @@ -18,6 +18,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsgrouptitles.h b/indra/newview/fsgrouptitles.h index 26551943c8..bbf3299542 100644 --- a/indra/newview/fsgrouptitles.h +++ b/indra/newview/fsgrouptitles.h @@ -18,6 +18,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_GROUPTITLES_H diff --git a/indra/newview/fslslbridge.cpp b/indra/newview/fslslbridge.cpp index 3cce0ee298..4b4c53d166 100644 --- a/indra/newview/fslslbridge.cpp +++ b/indra/newview/fslslbridge.cpp @@ -21,6 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org * $/LicenseInfo$ */ diff --git a/indra/newview/fslslbridge.h b/indra/newview/fslslbridge.h index e4b35aaba9..a0c726512b 100644 --- a/indra/newview/fslslbridge.h +++ b/indra/newview/fslslbridge.h @@ -21,8 +21,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org * $/LicenseInfo$ */ + #ifndef FS_LSLBRIDGE_H #define FS_LSLBRIDGE_H diff --git a/indra/newview/fslslbridgerequest.cpp b/indra/newview/fslslbridgerequest.cpp index 0555f91eb1..f85f3ea657 100644 --- a/indra/newview/fslslbridgerequest.cpp +++ b/indra/newview/fslslbridgerequest.cpp @@ -21,6 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org * $/LicenseInfo$ */ diff --git a/indra/newview/fslslbridgerequest.h b/indra/newview/fslslbridgerequest.h index 285417cc19..1bdf7a2cdc 100644 --- a/indra/newview/fslslbridgerequest.h +++ b/indra/newview/fslslbridgerequest.h @@ -21,6 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org * $/LicenseInfo$ */ diff --git a/indra/newview/fsmoneytracker.cpp b/indra/newview/fsmoneytracker.cpp index 0809da7fec..ce1ace0f23 100644 --- a/indra/newview/fsmoneytracker.cpp +++ b/indra/newview/fsmoneytracker.cpp @@ -18,6 +18,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsmoneytracker.h b/indra/newview/fsmoneytracker.h index 38847529f7..659293f2ee 100644 --- a/indra/newview/fsmoneytracker.h +++ b/indra/newview/fsmoneytracker.h @@ -18,6 +18,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #ifndef FS_MONEYTRACKER_H diff --git a/indra/newview/fsnearbychatvoicemonitor.cpp b/indra/newview/fsnearbychatvoicemonitor.cpp index 127efe1936..8c358da80f 100644 --- a/indra/newview/fsnearbychatvoicemonitor.cpp +++ b/indra/newview/fsnearbychatvoicemonitor.cpp @@ -18,6 +18,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsnearbychatvoicemonitor.h b/indra/newview/fsnearbychatvoicemonitor.h index a317a0b599..ff00903a54 100644 --- a/indra/newview/fsnearbychatvoicemonitor.h +++ b/indra/newview/fsnearbychatvoicemonitor.h @@ -18,6 +18,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_NEARBYCHATVOICEMONITOR_H diff --git a/indra/newview/fsslurlcommand.cpp b/indra/newview/fsslurlcommand.cpp index e7a22f8a9b..cb19204c66 100644 --- a/indra/newview/fsslurlcommand.cpp +++ b/indra/newview/fsslurlcommand.cpp @@ -18,6 +18,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/fsslurlcommand.h b/indra/newview/fsslurlcommand.h index 8779c95f5a..e451622b93 100644 --- a/indra/newview/fsslurlcommand.h +++ b/indra/newview/fsslurlcommand.h @@ -18,6 +18,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef FS_SLURLCOMMAND_H diff --git a/indra/newview/kcwlinterface.cpp b/indra/newview/kcwlinterface.cpp index 37b9b2b14c..72eaab0da0 100644 --- a/indra/newview/kcwlinterface.cpp +++ b/indra/newview/kcwlinterface.cpp @@ -18,8 +18,9 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - * The Phoenix Firestorm Project, 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA * http://www.firestormviewer.org + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/kcwlinterface.h b/indra/newview/kcwlinterface.h index bde3c16af1..a511c9b066 100644 --- a/indra/newview/kcwlinterface.h +++ b/indra/newview/kcwlinterface.h @@ -18,8 +18,9 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - * The Phoenix Firestorm Project, 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA * http://www.firestormviewer.org + * $/LicenseInfo$ */ #ifndef KC_WLINTERFACE_H diff --git a/indra/newview/utilitybar.cpp b/indra/newview/utilitybar.cpp index a6fc261cbb..83437c73fc 100644 --- a/indra/newview/utilitybar.cpp +++ b/indra/newview/utilitybar.cpp @@ -19,6 +19,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/utilitybar.h b/indra/newview/utilitybar.h index ff3cc6abf7..7a4797571d 100644 --- a/indra/newview/utilitybar.h +++ b/indra/newview/utilitybar.h @@ -19,6 +19,7 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * $/LicenseInfo$ */ #ifndef UTILITYBAR_H From 911fea809a264e66b4551c13867c51a6c6bca4ba Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 14:24:37 +0100 Subject: [PATCH 11/38] Fixed merge error in llagent.cpp --- indra/newview/llagent.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 612cf2df29..28f26a49a3 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -4893,9 +4893,6 @@ void LLAgent::sendAgentSetAppearance() } - - if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return; - LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL; //dumpAvatarTEs( "sendAgentSetAppearance()" ); From 5924511f985f2040d5be1282407d4d9e55e8a2db Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 14:45:12 +0100 Subject: [PATCH 12/38] Sort control list combo box for quickprefs editor --- indra/newview/quickprefs.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/quickprefs.cpp b/indra/newview/quickprefs.cpp index 819f2c88c7..de27a0bb26 100644 --- a/indra/newview/quickprefs.cpp +++ b/indra/newview/quickprefs.cpp @@ -333,6 +333,7 @@ BOOL FloaterQuickPrefs::postBuild() // add global and per account settings to the dropdown gSavedSettings.applyToAll(&func); gSavedPerAccountSettings.applyToAll(&func); + mControlNameCombo->sortByName(); // return LLDockableFloater::postBuild(); From 967df6155336a403e272479cff75a6f13461f61d Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 14:59:34 +0100 Subject: [PATCH 13/38] FIRE-9402: 'Arms downward, Legs together' and 'Arms downward, Legs apart' are inverted in pose stand --- indra/newview/app_settings/posestand.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/posestand.xml b/indra/newview/app_settings/posestand.xml index b33c80bbb3..8e8a9ee383 100644 --- a/indra/newview/app_settings/posestand.xml +++ b/indra/newview/app_settings/posestand.xml @@ -18,12 +18,12 @@ a0f213b6-5506-3cf8-32ac-cfc9684048e7 name - PS_Arms_downward_Legs_together + PS_Arms_downward_Legs_apart 9e95943d-8020-e622-a4e0-4c9f8058091a name - PS_Arms_downward_Legs_apart + PS_Arms_downward_Legs_together 6c5e15de-7079-f558-d635-7123b7379dec From 18148e233c7b6a3bb47a0cae8cf9b716ef07066c Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 14:59:53 +0100 Subject: [PATCH 14/38] Save pose stand floater position --- indra/newview/skins/default/xui/en/floater_fs_posestand.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/floater_fs_posestand.xml b/indra/newview/skins/default/xui/en/floater_fs_posestand.xml index 5ca13875f1..9f5158bbd6 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_posestand.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_posestand.xml @@ -6,6 +6,7 @@ layout="topleft" legacy_header_height="18" name="floater_fs_posestand" + save_rect="true" single_instance="true" title="Pose Stand"> Date: Wed, 6 Mar 2013 15:00:08 +0100 Subject: [PATCH 15/38] Sort pose names in pose stand floater by name --- indra/newview/fsfloaterposestand.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/fsfloaterposestand.cpp b/indra/newview/fsfloaterposestand.cpp index c0395ec48c..e7209ea57d 100644 --- a/indra/newview/fsfloaterposestand.cpp +++ b/indra/newview/fsfloaterposestand.cpp @@ -65,6 +65,7 @@ void FSFloaterPoseStand::loadPoses() } pose_file.close(); } + mComboPose->sortByName(); } void FSFloaterPoseStand::onCommitCombo() From 7b0b5726dd2fcf5b79ed1b112891655fad0f96eb Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 6 Mar 2013 09:53:11 -0500 Subject: [PATCH 16/38] make it clearer when DebugForceAppearanceRequestFailure is on --- indra/newview/llvoavatar.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f6fd8b2409..1bc26a7133 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2937,6 +2937,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) S32 last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion(); debug_line += llformat(" - cof: %d req: %d rcv:%d", curr_cof_version, last_request_cof_version, last_received_cof_version); + if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure")) + { + debug_line += " FORCING ERRS"; + } } addDebugText(debug_line); } From fe042430b03667abcd6b72ef9cc27d82d85f4242 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 6 Mar 2013 10:46:43 -0500 Subject: [PATCH 17/38] Fix for windows build failure --- indra/newview/llfloaterregiondebugconsole.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index 0cde878055..3a7ca17b73 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -75,7 +75,7 @@ namespace { public: /* virtual */ - void errorWithContent(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { sConsoleReplySignal(UNABLE_TO_SEND_COMMAND); } From 9f260b0845bde4b8e7f31ed0448d5f4f1292b7af Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 6 Mar 2013 19:22:58 +0100 Subject: [PATCH 18/38] Fixed wiring up of AvatarZOffset debug setting --- indra/newview/llviewercontrol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 901cbacdb6..ef115244cc 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -562,7 +562,7 @@ bool handleSettingF32Change(const LLSD& sdValue, F32* pValue) // ## Zi: Moved Avatar Z offset from RLVa to here bool handleAvatarZOffsetChanged(const LLSD& sdValue) { - gAgent.sendAgentSetAppearance(); + gAgentAvatarp->computeBodySize(); return true; } // ## Zi: Moved Avatar Z offset from RLVa to here From 757a025b79ecd9a0383b8d5ed797d55777a2a066 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Wed, 6 Mar 2013 20:33:42 +0100 Subject: [PATCH 19/38] Updated Polish translation --- .../default/xui/pl/floater_fs_posestand.xml | 2 +- .../skins/default/xui/pl/menu_viewer.xml | 4 +-- .../newview/skins/default/xui/pl/strings.xml | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/xui/pl/floater_fs_posestand.xml b/indra/newview/skins/default/xui/pl/floater_fs_posestand.xml index 3d2bff496b..012192b4eb 100644 --- a/indra/newview/skins/default/xui/pl/floater_fs_posestand.xml +++ b/indra/newview/skins/default/xui/pl/floater_fs_posestand.xml @@ -1,2 +1,2 @@ - + diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index bbb4cae927..3214367ee5 100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -24,7 +24,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 122f2b8d80..7fcca81edd 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -5111,4 +5111,37 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu. Kolor spod kursora + + Poza w kształcie litery T + + + Ramiona w dole, nogi złączone + + + Ramiona w dole, siedząc + + + Ramiona nisko, nogi złączone + + + Ramiona nisko, nogi oddzielnie + + + Ramiona w przód, nogi oddzielnie + + + Ramiona w przód, nogi złączone + + + Ramiona prosto, nogi oddzielnie + + + Ramiona prosto, siedząc + + + Ramiona w górze, nogi oddzielnie + + + Ramiona w górze, nogi złączone + From af257028a2f635e2f5ddc71a49971b5173839b99 Mon Sep 17 00:00:00 2001 From: Tonya Souther Date: Wed, 6 Mar 2013 16:09:45 -0600 Subject: [PATCH 20/38] Spelling fix. --- indra/newview/app_settings/posestand.xml | 4 ++-- indra/newview/skins/default/xui/de/strings.xml | 4 ++-- indra/newview/skins/default/xui/en/strings.xml | 4 ++-- indra/newview/skins/default/xui/pl/strings.xml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/indra/newview/app_settings/posestand.xml b/indra/newview/app_settings/posestand.xml index 8e8a9ee383..48ad752eb7 100644 --- a/indra/newview/app_settings/posestand.xml +++ b/indra/newview/app_settings/posestand.xml @@ -28,12 +28,12 @@ 6c5e15de-7079-f558-d635-7123b7379dec name - PS_Arms_foreward_Legs_apart + PS_Arms_forward_Legs_apart 58401663-f5d3-828c-6cb5-ff618308e6be name - PS_Arms_foreward_Legs_together + PS_Arms_forward_Legs_together 7598be4b-6b1d-afaf-bc5e-0708fa3c214a diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 7dc7856c70..6ba4426dbd 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -5592,10 +5592,10 @@ Setzen Sie den Editorpfad in Anführungszeichen Arme abwärts, Beine auseinander - + Arme nach vorn, Beine auseinander - + Arme nach vorn, Beine zusammen diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 21b09a1ab8..70db710a3b 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -5050,8 +5050,8 @@ Try enclosing path to the editor with double quotes. Arms down, sitting Arms downward, Legs together Arms downward, Legs apart - Arms foreward, Legs apart - Arms foreward, Legs together + Arms forward, Legs apart + Arms forward, Legs together Arms straight, Legs apart Arms straight, sitting Arms upward, Legs apart diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 7fcca81edd..cfe82dd7a3 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -5126,10 +5126,10 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu. Ramiona nisko, nogi oddzielnie - + Ramiona w przód, nogi oddzielnie - + Ramiona w przód, nogi złączone From 2784a515b0e725f74bf0e5fab47153ba358b26d6 Mon Sep 17 00:00:00 2001 From: Nyx Linden Date: Wed, 6 Mar 2013 17:20:33 -0500 Subject: [PATCH 21/38] SH-3954 SH-3941 SH-3910 FIX local appearance does not update We suppress texture downloads for local textures not needed with server side baking. We need to explicitly re-set texture priority for local textures when entering appearance mode. --- indra/newview/llvoavatarself.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index d3c91f3339..66ad4ec394 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2963,8 +2963,9 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch) gAgentAvatarp->idleUpdateAppearanceAnimation(); #endif - gAgentAvatarp->invalidateAll(); - gAgentAvatarp->updateMeshTextures(); + gAgentAvatarp->updateTextures(); // call updateTextureStats + gAgentAvatarp->invalidateAll(); // mark all bakes as dirty, request updates + gAgentAvatarp->updateMeshTextures(); // make sure correct textures are applied to the avatar mesh. } } From 01acef548f50ac664d350875d549767c196f4815 Mon Sep 17 00:00:00 2001 From: Nicky Date: Thu, 7 Mar 2013 05:49:53 +0100 Subject: [PATCH 22/38] Upload openjpeg-1.4-windows-20110622.tar.bz2 to downloads.phoenixviewer.com. --- autobuild.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autobuild.xml b/autobuild.xml index 263a995c87..b5438424b3 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -1814,7 +1814,7 @@ hash 2fbd3c2523c45923245b55551fae5e53 url - http://viewer.catznip.com/downloads/openjpeg-1.4-windows-20110622.tar.bz2 + http://downloads.phoenixviewer.com/openjpeg-1.4-windows-20110622.tar.bz2 name windows From 26bf0f4c3d96fd86388e250c2347022a332035ea Mon Sep 17 00:00:00 2001 From: Nicky Date: Thu, 7 Mar 2013 06:28:01 +0100 Subject: [PATCH 23/38] FIRE-9394; Do not access arrays beyond their end when loading a malformed dae file. --- indra/llprimitive/llmodel.cpp | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 62cfecab52..7f7391fc21 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -191,6 +191,13 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector& fa LLVolumeFace::VertexData cv; if (pos_source) { + // FIRE-9394; Guard against all kind of out of bounds access + if( i+pos_offset >= idx.getCount() ) + return LLModel::BAD_ELEMENT; + if( (idx[i+pos_offset]*3+2) >= v.getCount() ) + return LLModel::BAD_ELEMENT; + // + cv.setPosition(LLVector4a(v[idx[i+pos_offset]*3+0], v[idx[i+pos_offset]*3+1], v[idx[i+pos_offset]*3+2])); @@ -198,12 +205,26 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector& fa if (tc_source) { + // FIRE-9394; Guard against all kind of out of bounds access + if( i+tc_offset >= idx.getCount() ) + return LLModel::BAD_ELEMENT; + if( (idx[i+tc_offset]*2+1) >= tc.getCount() ) + return LLModel::BAD_ELEMENT; + // + cv.mTexCoord.setVec(tc[idx[i+tc_offset]*2+0], tc[idx[i+tc_offset]*2+1]); } if (norm_source) { + // FIRE-9394; Guard against all kind of out of bounds access + if( i+norm_offset >= idx.getCount() ) + return LLModel::BAD_ELEMENT; + if( (idx[i+norm_offset]*3+2) >= n.getCount() ) + return LLModel::BAD_ELEMENT; + // + cv.setNormal(LLVector4a(n[idx[i+norm_offset]*3+0], n[idx[i+norm_offset]*3+1], n[idx[i+norm_offset]*3+2])); @@ -394,6 +415,13 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector& fac } // + // FIRE-9394; Guard against all kind of out of bounds access + if( cur_idx+pos_offset >= idx.getCount() ) + return LLModel::BAD_ELEMENT; + if( (idx[cur_idx+pos_offset]*3+2) >= v.getCount() ) + return LLModel::BAD_ELEMENT; + // + cv.getPosition().set(v[idx[cur_idx+pos_offset]*3+0], v[idx[cur_idx+pos_offset]*3+1], v[idx[cur_idx+pos_offset]*3+2]); @@ -401,12 +429,26 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector& fac if (tc_source) { + // FIRE-9394; Guard against all kind of out of bounds access + if( cur_idx+tc_offset >= idx.getCount() ) + return LLModel::BAD_ELEMENT; + if( (idx[cur_idx+tc_offset]*2+1) >= tc.getCount() ) + return LLModel::BAD_ELEMENT; + // + cv.mTexCoord.setVec(tc[idx[cur_idx+tc_offset]*2+0], tc[idx[cur_idx+tc_offset]*2+1]); } if (norm_source) { + // FIRE-9394; Guard against all kind of out of bounds access + if( cur_idx+norm_offset >= idx.getCount() ) + return LLModel::BAD_ELEMENT; + if( (idx[cur_idx+norm_offset]*3+2) >= n.getCount() ) + return LLModel::BAD_ELEMENT; + // + cv.getNormal().set(n[idx[cur_idx+norm_offset]*3+0], n[idx[cur_idx+norm_offset]*3+1], n[idx[cur_idx+norm_offset]*3+2]); From beaae898cfbf441d11e93929f134471a06d60eff Mon Sep 17 00:00:00 2001 From: Kool Date: Thu, 7 Mar 2013 19:49:58 +0100 Subject: [PATCH 24/38] Spanish translation updates: Posestand, undeform. --- .../skins/default/xui/es/floater_fs_posestand.xml | 2 ++ indra/newview/skins/default/xui/es/menu_viewer.xml | 2 ++ indra/newview/skins/default/xui/es/strings.xml | 11 +++++++++++ 3 files changed, 15 insertions(+) create mode 100644 indra/newview/skins/default/xui/es/floater_fs_posestand.xml diff --git a/indra/newview/skins/default/xui/es/floater_fs_posestand.xml b/indra/newview/skins/default/xui/es/floater_fs_posestand.xml new file mode 100644 index 0000000000..95af698e0d --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_fs_posestand.xml @@ -0,0 +1,2 @@ + + diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index fc5e4489c4..4bb9302dd4 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -25,6 +25,7 @@ + @@ -33,6 +34,7 @@ + diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 872994b450..495a963aea 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -5358,4 +5358,15 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas Etiquetas nombre Puntos de mira Color bajo el cursor + Pose "T" + Brazos abajo, piernas juntas + Brazos abajo, sentado + Brazos hacia abajo, piernas juntas + Brazos hacia abajo, piernas separadas + Brazos hacia delante, piernas separadas + Brazos hacia delante, piernas juntas + Brazos rectos, piernas separadas + Brazos rectos, sentado + Brazos hacia arriba, piernas separadas + Brazos hacia arriba, piernas juntas From a238eae593ecc63cd6b461d02335dbaa6977e740 Mon Sep 17 00:00:00 2001 From: Whirly Date: Fri, 8 Mar 2013 14:57:15 +0000 Subject: [PATCH 25/38] FIRE-9410 : Fix for login crash when z offset was not zero Thanks to Zi for teaching me about Null pointer checks :) --- indra/newview/llviewercontrol.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index ef115244cc..1f845da74b 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -562,6 +562,7 @@ bool handleSettingF32Change(const LLSD& sdValue, F32* pValue) // ## Zi: Moved Avatar Z offset from RLVa to here bool handleAvatarZOffsetChanged(const LLSD& sdValue) { + if (gAgentAvatarp) gAgentAvatarp->computeBodySize(); return true; } From 5c05c3b1848b42cb0048a4501eeeab95812717c9 Mon Sep 17 00:00:00 2001 From: Whirly Date: Fri, 8 Mar 2013 15:50:51 +0000 Subject: [PATCH 26/38] FIRE-9418/BUG-1895 : Portugese - fix for malformed location info under Help -> About Firestorm --- indra/newview/skins/default/xui/pt/floater_about.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 018f62daf5..2e15133d04 100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -8,7 +8,7 @@ Construído com [COMPILER] versão [COMPILER_VERSION] - Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em [HOSTNAME]</nolink>([HOSTIP]) + Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em <nolink>[HOSTNAME]</nolink>([HOSTIP]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] From e42f3fff4ba60cefdbb7d1c126c8b2e17b4857a5 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 8 Mar 2013 17:26:14 +0100 Subject: [PATCH 27/38] Better fix for FIRE-9410 --- indra/newview/llviewercontrol.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 1f845da74b..58e184725f 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -562,8 +562,10 @@ bool handleSettingF32Change(const LLSD& sdValue, F32* pValue) // ## Zi: Moved Avatar Z offset from RLVa to here bool handleAvatarZOffsetChanged(const LLSD& sdValue) { - if (gAgentAvatarp) - gAgentAvatarp->computeBodySize(); + if (isAgentAvatarValid()) + { + gAgentAvatarp->computeBodySize(); + } return true; } // ## Zi: Moved Avatar Z offset from RLVa to here From 13faedb4e72508cbd64975e39db0ec424b7ccb17 Mon Sep 17 00:00:00 2001 From: Tonya Souther Date: Fri, 8 Mar 2013 11:05:47 -0600 Subject: [PATCH 28/38] Fix string name to match the one the program expects. --- indra/newview/skins/default/xui/es/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 495a963aea..822a34df4e 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -5363,8 +5363,8 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas Brazos abajo, sentado Brazos hacia abajo, piernas juntas Brazos hacia abajo, piernas separadas - Brazos hacia delante, piernas separadas - Brazos hacia delante, piernas juntas + Brazos hacia delante, piernas separadas + Brazos hacia delante, piernas juntas Brazos rectos, piernas separadas Brazos rectos, sentado Brazos hacia arriba, piernas separadas From c11daefd0f1a2384d5f44681cccd1111b28e8e08 Mon Sep 17 00:00:00 2001 From: Whirly Date: Fri, 8 Mar 2013 17:22:01 +0000 Subject: [PATCH 29/38] Disable debug logging for serverside baking --- indra/newview/app_settings/logcontrol.xml | 7 ++++--- indra/newview/app_settings/settings.xml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index 4e8c4c6ba6..c84500c93f 100755 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -42,9 +42,10 @@ tags - Avatar - parseFile diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b378ae55fd..98d2c6a7fb 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9619,7 +9619,7 @@ Change of this parameter will affect the layout of buttons in notification toast Type Boolean Value - 1 + 0 Backup 0 From 197f4039d068beee8ce662176e42e029148954fc Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 8 Mar 2013 20:52:15 +0100 Subject: [PATCH 30/38] FIRE-4978/FIRE-7847: Major rewrite of the Windlight controls in quick preferences and phototools: * Added checkbox that will show if region windlight settings are used and can also enable/disable usage of them * Added combobox for day cycle presets * The sky preset combobox will show "Day cycle based", if the current sky preset is defined by the selected day cycle and time of day * The sky preset combobox will show "Region default", if the current sky preset is based on region windlight * The water preset combobox will show "Region default", if the current water preset is based on region windlight * The day cycle combobox will show "Region default", if the current day cycle preset is based on region windlight * The day cycle combobox will show "None", if no day cycle preset is active (if a sky preset is chosen) * Changing either sky, water or day cycle preset will disable region windlight and persist as user setting * The slider will either change day of time (day cycle active) or sun position (sky preset chosen) * Reset to region defaults button will reset sky and water to region defaults, but not enable region windlight and not persist (not doing so would disallow us from changing either sky or water) * Disabling region windlight will load previously chosen sky, water and day cycle preset (this is intentional because of the implementation of the basic Windlight functionality) --- indra/newview/llenvmanager.cpp | 32 + indra/newview/llwlanimator.h | 8 + indra/newview/quickprefs.cpp | 564 ++++++++++-------- indra/newview/quickprefs.h | 52 +- .../default/xui/de/floater_phototools.xml | 6 +- .../default/xui/de/floater_quickprefs.xml | 7 +- .../newview/skins/default/xui/de/strings.xml | 10 + .../default/xui/en/floater_phototools.xml | 88 ++- .../default/xui/en/floater_quickprefs.xml | 66 +- .../newview/skins/default/xui/en/strings.xml | 4 + .../default/xui/es/floater_phototools.xml | 2 +- .../default/xui/es/floater_quickprefs.xml | 2 +- .../default/xui/it/floater_quickprefs.xml | 2 +- .../default/xui/pl/floater_phototools.xml | 2 +- .../default/xui/pl/floater_quickprefs.xml | 2 +- .../starlight/xui/en/floater_phototools.xml | 76 ++- .../xui/en/floater_phototools.xml | 76 ++- 17 files changed, 704 insertions(+), 295 deletions(-) diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp index caa6ffe935..3c18917ed4 100644 --- a/indra/newview/llenvmanager.cpp +++ b/indra/newview/llenvmanager.cpp @@ -40,6 +40,7 @@ #include "rlvhandler.h" // [/RLVa:KB] #include "kcwlinterface.h" +#include "quickprefs.h" std::string LLEnvPrefs::getWaterPresetName() const { @@ -180,6 +181,9 @@ bool LLEnvManagerNew::useRegionSettings() bool LLEnvManagerNew::useWaterPreset(const std::string& name) { + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_WATER, LLSD(name)); + LL_DEBUGS("Windlight") << "Displaying water preset " << name << LL_ENDL; LLWaterParamManager& water_mgr = LLWaterParamManager::instance(); bool rslt = water_mgr.getParamSet(name, water_mgr.mCurParams); @@ -205,6 +209,9 @@ bool LLEnvManagerNew::useSkyPreset(const std::string& name, bool interpolate /*= return false; } + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_SKY, LLSD(name)); + LL_DEBUGS("Windlight") << "Displaying sky preset " << name << LL_ENDL; sky_mgr.applySkyParams(param_set.getAll(), interpolate); return true; @@ -225,6 +232,9 @@ bool LLEnvManagerNew::useDayCycle(const std::string& name, LLEnvKey::EScope scop { LL_DEBUGS("Windlight") << "Displaying region day cycle " << name << LL_ENDL; params = getRegionSettings().getWLDayCycle(); + + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_DAYCYCLE, LLSD(PRESET_NAME_REGION_DEFAULT)); } else { @@ -235,6 +245,9 @@ bool LLEnvManagerNew::useDayCycle(const std::string& name, LLEnvKey::EScope scop llwarns << "No day cycle named " << name << llendl; return false; } + + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_DAYCYCLE, LLSD(name)); } bool rslt = LLWLParamManager::instance().applyDayCycleParams(params, scope); @@ -578,6 +591,9 @@ void LLEnvManagerNew::updateWaterFromPrefs(bool interpolate) LLWaterParamSet default_water; water_mgr.getParamSet("Default", default_water); target_water_params = default_water.getAll(); + + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_WATER, LLSD("Default")); } if (getUseRegionSettings()) @@ -588,6 +604,9 @@ void LLEnvManagerNew::updateWaterFromPrefs(bool interpolate) { LL_DEBUGS("Windlight") << "Applying region water" << LL_ENDL; target_water_params = region_water_params; + + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_WATER, LLSD(PRESET_NAME_REGION_DEFAULT)); } else { @@ -606,6 +625,13 @@ void LLEnvManagerNew::updateWaterFromPrefs(bool interpolate) // *TODO: Fix user preferences accordingly. } + // Quickprefs integration + else + { + FloaterQuickPrefs::updateParam(QP_PARAM_WATER, LLSD(water)); + } + // Quickprefs integration + target_water_params = params.getAll(); } @@ -643,6 +669,9 @@ bool LLEnvManagerNew::useRegionSky() // *TODO: Support fixed sky from region. + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_SKY, LLSD(PRESET_NAME_REGION_DEFAULT)); + // Otherwise apply region day cycle. LL_DEBUGS("Windlight") << "Applying region sky" << LL_ENDL; return useDayCycleParams( @@ -663,6 +692,9 @@ bool LLEnvManagerNew::useRegionWater() return useDefaultWater(); } + // Quickprefs integration + FloaterQuickPrefs::updateParam(QP_PARAM_WATER, LLSD(PRESET_NAME_REGION_DEFAULT)); + // Otherwise apply region water. LL_DEBUGS("Windlight") << "Applying region sky" << LL_ENDL; return useWaterParams(region_water); diff --git a/indra/newview/llwlanimator.h b/indra/newview/llwlanimator.h index 7f9d7f62c6..880a89e1ab 100644 --- a/indra/newview/llwlanimator.h +++ b/indra/newview/llwlanimator.h @@ -128,6 +128,14 @@ public: /// get local time between 0 and 1 static F64 getLocalTime(); + // Quickprefs integration + void stopInterpolation() + { + mIsInterpolating = false; + mIsInterpolatingSky = false; + } + // + private: ETime mTimeType; bool mIsRunning, mIsInterpolating, mIsInterpolatingSky; diff --git a/indra/newview/quickprefs.cpp b/indra/newview/quickprefs.cpp index de27a0bb26..4cbb86926a 100644 --- a/indra/newview/quickprefs.cpp +++ b/indra/newview/quickprefs.cpp @@ -7,6 +7,7 @@ * Copyright (C) 2010, Linden Research, Inc. * Copyright (C) 2011, WoLf Loonie @ Second Life * Copyright (C) 2013, Zi Ree @ Second Life + * Copyright (C) 2013, Ansariel Hiller @ Second Life * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -31,6 +32,7 @@ #include "quickprefs.h" #include "llboost.h" #include "llcombobox.h" +#include "lldaycyclemanager.h" #include "llwlparamset.h" #include "llwlparammanager.h" #include "llwaterparammanager.h" @@ -41,7 +43,7 @@ #include "llviewercontrol.h" #include "lldrawpoolbump.h" #include "llviewertexturelist.h" - +#include "llfloaterreg.h" #include "llfeaturemanager.h" #include "rlvhandler.h" #include "llcheckboxctrl.h" @@ -58,6 +60,24 @@ #include #include + +static F32 sun_pos_to_time24(F32 sun_pos) +{ + return fmodf(sun_pos * 24.0f + 6, 24.0f); +} + +static F32 time24_to_sun_pos(F32 time) +{ + F32 ret = time - 6.f; + if (ret < 0) + { + ret += 24.f; + } + + return ret / 24.f; +} + + FloaterQuickPrefs::QuickPrefsXML::QuickPrefsXML() : entries("entries") {} @@ -120,17 +140,20 @@ void FloaterQuickPrefs::onOpen(const LLSD& key) } -void FloaterQuickPrefs::initCallbacks(void) +void FloaterQuickPrefs::initCallbacks() { - LLWLParamManager& param_mgr = LLWLParamManager::instance(); - getChild("WaterPresetsCombo")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onChangeWaterPreset, this, _1)); - getChild("WLPresetsCombo")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onChangeSkyPreset, this, _1)); + getChild("UseRegionWindlight")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onChangeUseRegionWindlight, this)); + getChild("WaterPresetsCombo")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onChangeWaterPreset, this)); + getChild("WLPresetsCombo")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onChangeSkyPreset, this)); + getChild("DCPresetsCombo")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onChangeDayCyclePreset, this)); getChild("WLPrevPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickSkyPrev, this)); getChild("WLNextPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickSkyNext, this)); getChild("WWPrevPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickWaterPrev, this)); getChild("WWNextPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickWaterNext, this)); - getChild("UseRegionWL")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickRegionWL, this)); - getChild("WLSunPos")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onSunMoved, this, _1, ¶m_mgr.mLightnorm)); + getChild("DCPrevPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickDayCyclePrev, this)); + getChild("DCNextPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickDayCycleNext, this)); + getChild("ResetToRegionDefault")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickResetToRegionDefault, this)); + getChild("WLSunPos")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onSunMoved, this)); // Phototools additions if (getIsPhototools()) @@ -145,6 +168,116 @@ void FloaterQuickPrefs::initCallbacks(void) gSavedSettings.getControl("QuickPrefsEditMode")->getSignal()->connect(boost::bind(&FloaterQuickPrefs::onEditModeChanged, this)); // Dynamic Quickprefs } +void FloaterQuickPrefs::loadPresets() +{ + // WL Water combo box + if (mWaterPresetsCombo != NULL) + { + std::list user_presets, system_presets; + LLWaterParamManager::instance().getPresetNames(user_presets, system_presets); + + mWaterPresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT)); + mWaterPresetsCombo->addSeparator(); + + // Add user presets first. + for (std::list::const_iterator mIt = user_presets.begin(); mIt != user_presets.end(); ++mIt) + { + std::string preset_name = *mIt; + if (!preset_name.empty()) + { + mWaterPresetsCombo->add(preset_name, LLSD(preset_name)); + } + } + + if (user_presets.size() > 0) + { + mWaterPresetsCombo->addSeparator(); + } + + // Add system presets. + for (std::list::const_iterator mIt = system_presets.begin(); mIt != system_presets.end(); ++mIt) + { + std::string preset_name = *mIt; + if (!preset_name.empty()) + { + mWaterPresetsCombo->add(preset_name, LLSD(preset_name)); + } + } + } + + // WL Sky combo box + if (mWLPresetsCombo != NULL) + { + LLWLParamManager::preset_name_list_t user_presets, sys_presets, region_presets; + LLWLParamManager::instance().getPresetNames(region_presets, user_presets, sys_presets); + + mWLPresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT)); + mWLPresetsCombo->add(LLTrans::getString("QP_WL_Day_Cycle_Based"), LLSD(PRESET_NAME_SKY_DAY_CYCLE)); + mWLPresetsCombo->addSeparator(); + + // Add user presets. + for (LLWLParamManager::preset_name_list_t::const_iterator it = user_presets.begin(); it != user_presets.end(); ++it) + { + std::string preset_name = *it; + if (!preset_name.empty()) + { + mWLPresetsCombo->add(preset_name, LLSD(preset_name)); + } + } + + if (!user_presets.empty()) + { + mWLPresetsCombo->addSeparator(); + } + + // Add system presets. + for (LLWLParamManager::preset_name_list_t::const_iterator it = sys_presets.begin(); it != sys_presets.end(); ++it) + { + std::string preset_name = *it; + if (!preset_name.empty()) + { + mWLPresetsCombo->add(preset_name, LLSD(preset_name)); + } + } + } + + // WL Day Cycle combo box + if (mWLPresetsCombo != NULL) + { + LLDayCycleManager::preset_name_list_t user_presets, sys_presets; + LLDayCycleManager::instance().getPresetNames(user_presets, sys_presets); + + mDayCyclePresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT)); + mDayCyclePresetsCombo->add(LLTrans::getString("QP_WL_None"), LLSD(PRESET_NAME_NONE)); + mDayCyclePresetsCombo->addSeparator(); + + // Add user presets. + for (LLDayCycleManager::preset_name_list_t::const_iterator it = user_presets.begin(); it != user_presets.end(); ++it) + { + std::string preset_name = *it; + if (!preset_name.empty()) + { + mDayCyclePresetsCombo->add(preset_name, LLSD(preset_name)); + } + } + + if (!user_presets.empty()) + { + mDayCyclePresetsCombo->addSeparator(); + } + + // Add system presets. + for (LLDayCycleManager::preset_name_list_t::const_iterator it = sys_presets.begin(); it != sys_presets.end(); ++it) + { + std::string preset_name = *it; + if (!preset_name.empty()) + { + mDayCyclePresetsCombo->add(preset_name, LLSD(preset_name)); + } + } + } +} + BOOL FloaterQuickPrefs::postBuild() { // Phototools additions @@ -162,62 +295,13 @@ BOOL FloaterQuickPrefs::postBuild() mWaterPresetsCombo = getChild("WaterPresetsCombo"); mWLPresetsCombo = getChild("WLPresetsCombo"); + mDayCyclePresetsCombo = getChild("DCPresetsCombo"); mWLSunPos = getChild("WLSunPos"); - - LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance(); - if (mWaterPresetsCombo != NULL) - { - - std::list user_presets, system_presets; - LLWaterParamManager::instance().getPresetNames(user_presets, system_presets); - - // Add user presets first. - for (std::list::const_iterator mIt = user_presets.begin(); mIt != user_presets.end(); ++mIt) - { - if((*mIt).length()>0) mWaterPresetsCombo->add(*mIt); - } - - - if (user_presets.size() > 0) - { - mWaterPresetsCombo->addSeparator(); - } - - // Add system presets. - for (std::list::const_iterator mIt = system_presets.begin(); mIt != system_presets.end(); ++mIt) - { - if((*mIt).length()>0) mWaterPresetsCombo->add(*mIt); - } - mWaterPresetsCombo->selectByValue(env_mgr.getWaterPresetName()); - } - - - if (mWLPresetsCombo != NULL) - { - LLWLParamManager::preset_name_list_t user_presets, sys_presets, region_presets; - LLWLParamManager::instance().getPresetNames(region_presets, user_presets, sys_presets); - - // Add user presets. - for (LLWLParamManager::preset_name_list_t::const_iterator it = user_presets.begin(); it != user_presets.end(); ++it) - { - if((*it).length()>0) mWLPresetsCombo->add(*it); - } - - if (!user_presets.empty()) - { - mWLPresetsCombo->addSeparator(); - } - - // Add system presets. - for (LLWLParamManager::preset_name_list_t::const_iterator it = sys_presets.begin(); it != sys_presets.end(); ++it) - { - if((*it).length()>0) mWLPresetsCombo->add(*it); - } - mWLPresetsCombo->selectByValue(env_mgr.getSkyPresetName()); - } - + mUseRegionWindlight = getChild("UseRegionWindlight"); mWLSunPos->addSlider(12.f); + initCallbacks(); + loadPresets(); if (gRlvHandler.isEnabled()) { @@ -339,26 +423,104 @@ BOOL FloaterQuickPrefs::postBuild() return LLDockableFloater::postBuild(); } -void FloaterQuickPrefs::onChangeWaterPreset(LLUICtrl* ctrl) +bool FloaterQuickPrefs::isValidPresetName(const std::string& preset_name) { - std::string data = ctrl->getValue().asString(); - if(!data.empty()) + return (!preset_name.empty() && + preset_name != PRESET_NAME_REGION_DEFAULT && + preset_name != PRESET_NAME_SKY_DAY_CYCLE && + preset_name != PRESET_NAME_NONE); +} + +std::string FloaterQuickPrefs::stepComboBox(LLComboBox* ctrl, bool forward) +{ + S32 increment = (forward ? 1 : -1); + S32 lastitem = ctrl->getItemCount() - 1; + S32 curid = ctrl->getCurrentIndex(); + std::string preset_name; + std::string start_preset_name; + + start_preset_name = ctrl->getValue().asString(); + do { - LLEnvManagerNew::instance().setUseWaterPreset(data, (bool)gSavedSettings.getBOOL("FSInterpolateWater")); - LLWaterParamManager::instance().getParamSet(data, LLWaterParamManager::instance().mCurParams); + curid += increment; + if (curid < 0) + { + curid = lastitem; + } + else if (curid > lastitem) + { + curid = 0; + } + ctrl->setCurrentByIndex(curid); + preset_name = ctrl->getSelectedValue().asString(); + } + while (!isValidPresetName(preset_name) || preset_name == start_preset_name); + + return preset_name; +} + +void FloaterQuickPrefs::selectSkyPreset(const std::string& preset_name) +{ + if (isValidPresetName(preset_name)) + { + deactivateAnimator(); + LLEnvManagerNew::instance().setUseSkyPreset(preset_name, (bool)gSavedSettings.getBOOL("FSInterpolateSky")); } } -void FloaterQuickPrefs::onChangeSkyPreset(LLUICtrl* ctrl) +void FloaterQuickPrefs::selectWaterPreset(const std::string& preset_name) { - std::string data = ctrl->getValue().asString(); - if(!data.empty()) - { - LLEnvManagerNew::instance().setUseSkyPreset(data, (bool)gSavedSettings.getBOOL("FSInterpolateSky")); - LLWLParamManager::instance().getParamSet(LLWLParamKey(data, LLEnvKey::SCOPE_LOCAL), LLWLParamManager::instance().mCurParams); + if (isValidPresetName(preset_name)) + { + deactivateAnimator(); + LLEnvManagerNew::instance().setUseWaterPreset(preset_name, (bool)gSavedSettings.getBOOL("FSInterpolateWater")); } } +void FloaterQuickPrefs::selectDayCyclePreset(const std::string& preset_name) +{ + if (isValidPresetName(preset_name)) + { + deactivateAnimator(); + LLEnvManagerNew::instance().setUseDayCycle(preset_name, (bool)gSavedSettings.getBOOL("FSInterpolateSky")); + } +} + +void FloaterQuickPrefs::onChangeUseRegionWindlight() +{ + LLEnvManagerNew::instance().setUseRegionSettings(mUseRegionWindlight->get(), (gSavedSettings.getBOOL("FSInterpolateSky") || gSavedSettings.getBOOL("FSInterpolateWater"))); +} + +void FloaterQuickPrefs::onChangeWaterPreset() +{ + std::string preset_name = mWaterPresetsCombo->getSelectedValue().asString(); + if (!isValidPresetName(preset_name)) + { + preset_name = stepComboBox(mWaterPresetsCombo, true); + } + selectWaterPreset(preset_name); +} + +void FloaterQuickPrefs::onChangeSkyPreset() +{ + std::string preset_name = mWLPresetsCombo->getSelectedValue().asString(); + if (!isValidPresetName(preset_name)) + { + preset_name = stepComboBox(mWLPresetsCombo, true); + } + selectSkyPreset(preset_name); +} + +void FloaterQuickPrefs::onChangeDayCyclePreset() +{ + std::string preset_name = mDayCyclePresetsCombo->getSelectedValue().asString(); + if (!isValidPresetName(preset_name)) + { + preset_name = stepComboBox(mDayCyclePresetsCombo, true); + } + selectDayCyclePreset(preset_name); +} + void FloaterQuickPrefs::deactivateAnimator() { LLWLParamManager::instance().mAnimator.deactivate(); @@ -366,199 +528,129 @@ void FloaterQuickPrefs::deactivateAnimator() void FloaterQuickPrefs::onClickWaterPrev() { - LLWaterParamManager& mgr = LLWaterParamManager::instance(); - LLWaterParamSet& currentParams = mgr.mCurParams; - - std::map param_list = LLWaterParamManager::instance().getPresets(); - - // find place of current param - std::map::iterator mIt = param_list.find(currentParams.mName); - - // shouldn't happen unless you delete every preset but Default - if (mIt == param_list.end()) - { - llwarns << "No more presets left!" << llendl; - return; - } - - // if at the beginning, loop - if (mIt == param_list.begin()) - { - std::map::iterator last = param_list.end(); - last--; - mIt = last; - } - else - { - mIt--; - } - - deactivateAnimator(); - - mWaterPresetsCombo->setSimple(mIt->first); - LLEnvManagerNew::instance().setUseWaterPreset(mIt->first, (bool)gSavedSettings.getBOOL("FSInterpolateWater")); - mgr.getParamSet(mIt->first, mgr.mCurParams); + std::string preset_name = stepComboBox(mWaterPresetsCombo, false); + selectWaterPreset(preset_name); } void FloaterQuickPrefs::onClickWaterNext() { - LLWaterParamManager& mgr = LLWaterParamManager::instance(); - LLWaterParamSet& currentParams = mgr.mCurParams; - - std::map param_list = mgr.getPresets(); - - // find place of current param - std::map::iterator mIt = param_list.find(currentParams.mName); - - // shouldn't happen unless you delete every preset but Default - if (mIt == param_list.end()) - { - llwarns << "No more presets left!" << llendl; - return; - } - - // if at the end, loop - std::map::iterator last = param_list.end(); - last--; - if (mIt == last) - { - mIt = param_list.begin(); - } - else - { - mIt++; - } - - deactivateAnimator(); - - mWaterPresetsCombo->setSimple(mIt->first); - LLEnvManagerNew::instance().setUseWaterPreset(mIt->first, (bool)gSavedSettings.getBOOL("FSInterpolateWater")); - mgr.getParamSet(mIt->first, mgr.mCurParams); + std::string preset_name = stepComboBox(mWaterPresetsCombo, true); + selectWaterPreset(preset_name); } void FloaterQuickPrefs::onClickSkyPrev() { - LLWLParamManager& mgr = LLWLParamManager::instance(); - std::map param_list = mgr.getParamList(); - - // find place of current param - std::map::iterator mIt; - mIt = param_list.find(LLWLParamKey(mgr.mCurParams.mName, LLEnvKey::SCOPE_LOCAL)); - - // shouldn't happen unless you delete every preset but Default - if (mIt == param_list.end()) - { - llwarns << "No more presets left!" << llendl; - return; - } - - // if at the beginning, loop - if (mIt == param_list.begin()) - { - std::map::iterator last = param_list.end(); - last--; - mIt = last; - } - else - { - mIt--; - } - - deactivateAnimator(); - - mWLPresetsCombo->setSimple(mIt->first.name); - LLEnvManagerNew::instance().setUseSkyPreset(mIt->first.name, (bool)gSavedSettings.getBOOL("FSInterpolateSky")); - mgr.getParamSet(mIt->first, mgr.mCurParams); + std::string preset_name = stepComboBox(mWLPresetsCombo, false); + selectSkyPreset(preset_name); } void FloaterQuickPrefs::onClickSkyNext() { - LLWLParamManager& mgr = LLWLParamManager::instance(); - - std::map param_list = mgr.getParamList(); - - // find place of current param - std::map::iterator mIt; - mIt = param_list.find(LLWLParamKey(mgr.mCurParams.mName, LLEnvKey::SCOPE_LOCAL)); - - // shouldn't happen unless you delete every preset but Default - if (mIt == param_list.end()) - { - llwarns << "No more presets left!" << llendl; - return; - } - - // if at the end, loop - std::map::iterator last = param_list.end(); - last--; - if (mIt == last) - { - mIt = param_list.begin(); - } - else - { - mIt++; - } - - deactivateAnimator(); - - mWLPresetsCombo->setSimple(mIt->first.name); - LLEnvManagerNew::instance().setUseSkyPreset(mIt->first.name, (bool)gSavedSettings.getBOOL("FSInterpolateSky")); - mgr.getParamSet(mIt->first, mgr.mCurParams); + std::string preset_name = stepComboBox(mWLPresetsCombo, true); + selectSkyPreset(preset_name); } +void FloaterQuickPrefs::onClickDayCyclePrev() +{ + std::string preset_name = stepComboBox(mDayCyclePresetsCombo, false); + selectDayCyclePreset(preset_name); +} + +void FloaterQuickPrefs::onClickDayCycleNext() +{ + std::string preset_name = stepComboBox(mDayCyclePresetsCombo, true); + selectDayCyclePreset(preset_name); +} + + void FloaterQuickPrefs::draw() { - if (!hasFocus()) + F32 val; + + if (LLEnvManagerNew::instance().getUseRegionSettings() || + LLEnvManagerNew::instance().getUseDayCycle()) { - syncControls(); + val = (F32)(LLWLParamManager::instance().mAnimator.getDayTime() * 24.f); } + else + { + val = sun_pos_to_time24(LLWLParamManager::instance().mCurParams.getSunAngle() / F_TWO_PI); + } + + mWLSunPos->setCurSliderValue(val); + LLFloater::draw(); } -static F32 sun_pos_to_time24(F32 sun_pos) +void FloaterQuickPrefs::onSunMoved() { - return fmodf(sun_pos * 24.0f + 6, 24.0f); -} - -void FloaterQuickPrefs::syncControls() -{ - bool err; - - LLWLParamManager& param_mgr = LLWLParamManager::instance(); - - F32 time24 = sun_pos_to_time24(param_mgr.mCurParams.getFloat("sun_angle", err) / F_TWO_PI); - mWLSunPos->setCurSliderValue(time24, TRUE); - - std::string current_wlpreset = param_mgr.mCurParams.mName; - if (mWLPresetsCombo->getValue().asString() != current_wlpreset) + if (LLEnvManagerNew::instance().getUseRegionSettings() || + LLEnvManagerNew::instance().getUseDayCycle()) { - mWLPresetsCombo->setSimple(current_wlpreset); + F32 val = mWLSunPos->getCurSliderValue() / 24.0f; + + LLWLParamManager& mgr = LLWLParamManager::instance(); + mgr.mAnimator.setDayTime((F64)val); + mgr.mAnimator.deactivate(); + mgr.mAnimator.update(mgr.mCurParams); } - - std::string current_waterpreset = LLWaterParamManager::instance().mCurParams.mName; - if (mWaterPresetsCombo->getValue().asString() != current_waterpreset) + else { - mWaterPresetsCombo->setSimple(current_waterpreset); + deactivateAnimator(); + F32 val = time24_to_sun_pos(mWLSunPos->getCurSliderValue()) * F_TWO_PI; + LLWLParamManager::instance().mCurParams.setSunAngle(val); } } -void FloaterQuickPrefs::onSunMoved(LLUICtrl* ctrl, void* userdata) +void FloaterQuickPrefs::onClickResetToRegionDefault() { - F32 val = mWLSunPos->getCurSliderValue() / 24.0f; - - LLWLParamManager& mgr = LLWLParamManager::instance(); - mgr.mAnimator.setDayTime((F64)val); - mgr.mAnimator.deactivate(); - mgr.mAnimator.update(mgr.mCurParams); -} - -void FloaterQuickPrefs::onClickRegionWL() -{ - mWLPresetsCombo->setSimple(LLStringExplicit("Default")); - mWaterPresetsCombo->setSimple(LLStringExplicit("Default")); + deactivateAnimator(); + LLWLParamManager::instance().mAnimator.stopInterpolation(); LLEnvManagerNew::instance().useRegionSettings(); - LLWLParamManager::instance().getParamSet(LLWLParamKey("Default", LLEnvKey::SCOPE_LOCAL), LLWLParamManager::instance().mCurParams); +} + +// This method is invoked by LLEnvManagerNew when a particular preset is applied +// static +void FloaterQuickPrefs::updateParam(EQuickPrefUpdateParam param, const LLSD& value) +{ + FloaterQuickPrefs* qp_floater = LLFloaterReg::getTypedInstance("quickprefs"); + FloaterQuickPrefs* pt_floater = LLFloaterReg::getTypedInstance(PHOTOTOOLS_FLOATER); + + switch (param) + { + case QP_PARAM_SKY: + qp_floater->setSelectedSky(value.asString()); + pt_floater->setSelectedSky(value.asString()); + break; + case QP_PARAM_WATER: + qp_floater->setSelectedWater(value.asString()); + pt_floater->setSelectedWater(value.asString()); + break; + case QP_PARAM_DAYCYCLE: + qp_floater->setSelectedDayCycle(value.asString()); + pt_floater->setSelectedDayCycle(value.asString()); + break; + default: + break; + } +} + + +void FloaterQuickPrefs::setSelectedSky(const std::string& preset_name) +{ + mWLPresetsCombo->setValue(LLSD(preset_name)); + mDayCyclePresetsCombo->setValue(LLSD(PRESET_NAME_NONE)); +} + +void FloaterQuickPrefs::setSelectedWater(const std::string& preset_name) +{ + mWaterPresetsCombo->setValue(LLSD(preset_name)); +} + +void FloaterQuickPrefs::setSelectedDayCycle(const std::string& preset_name) +{ + mDayCyclePresetsCombo->setValue(LLSD(preset_name)); + mWLPresetsCombo->setValue(LLSD(PRESET_NAME_SKY_DAY_CYCLE)); } // Phototools additions @@ -721,6 +813,10 @@ void FloaterQuickPrefs::enableWindlightButtons(BOOL enable) childSetEnabled("WWPrevPreset", enable); childSetEnabled("WWNextPreset", enable); childSetEnabled("UseRegionWL", enable); + childSetEnabled("UseRegionWindlight", enable); + childSetEnabled("DCPresetsCombo", enable); + childSetEnabled("DCPrevPreset", enable); + childSetEnabled("DCNextPreset", enable); if (getIsPhototools()) { diff --git a/indra/newview/quickprefs.h b/indra/newview/quickprefs.h index 3ea6ae2493..a8a34405fd 100644 --- a/indra/newview/quickprefs.h +++ b/indra/newview/quickprefs.h @@ -7,6 +7,7 @@ * Copyright (C) 2010, Linden Research, Inc. * Copyright (C) 2011, WoLf Loonie @ Second Life * Copyright (C) 2013, Zi Ree @ Second Life + * Copyright (C) 2013, Ansariel Hiller @ Second Life * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -43,6 +44,17 @@ class LLLayoutPanel; class LLSpinCtrl; // +#define PRESET_NAME_REGION_DEFAULT "__Regiondefault__" +#define PRESET_NAME_SKY_DAY_CYCLE "__Sky_Day_Cycle__" +#define PRESET_NAME_NONE "__None__" + +typedef enum e_quickpref_update_param +{ + QP_PARAM_SKY, + QP_PARAM_WATER, + QP_PARAM_DAYCYCLE +} EQuickPrefUpdateParam; + class FloaterQuickPrefs : public LLTransientDockableFloater { friend class LLFloaterReg; @@ -50,27 +62,45 @@ class FloaterQuickPrefs : public LLTransientDockableFloater private: FloaterQuickPrefs(const LLSD& key); ~FloaterQuickPrefs(); - void onSunMoved(LLUICtrl* ctrl, void* userdata); + void onSunMoved(); -public: - /*virtual*/ BOOL postBuild(); - /*virtual*/ void draw(); - void syncControls(); - virtual void onOpen(const LLSD& key); + void selectSkyPreset(const std::string& preset_name); + void selectWaterPreset(const std::string& preset_name); + void selectDayCyclePreset(const std::string& preset_name); - void initCallbacks(void); - void onChangeWaterPreset(LLUICtrl* ctrl); - void onChangeSkyPreset(LLUICtrl* ctrl); + bool isValidPresetName(const std::string& preset_name); + std::string stepComboBox(LLComboBox* ctrl, bool forward); + + void initCallbacks(); + void loadPresets(); + + void onChangeUseRegionWindlight(); + void onChangeWaterPreset(); + void onChangeSkyPreset(); + void onChangeDayCyclePreset(); void deactivateAnimator(); void onClickSkyPrev(); void onClickSkyNext(); void onClickWaterPrev(); void onClickWaterNext(); - void onClickRegionWL(); + void onClickDayCyclePrev(); + void onClickDayCycleNext(); + void onClickResetToRegionDefault(); void updateRlvRestrictions(ERlvBehaviour behavior, ERlvParamType type); void enableWindlightButtons(BOOL enable); +public: + /*virtual*/ BOOL postBuild(); + /*virtual*/ void draw(); + virtual void onOpen(const LLSD& key); + + + static void updateParam(EQuickPrefUpdateParam param, const LLSD& value); + void setSelectedSky(const std::string& preset_name); + void setSelectedWater(const std::string& preset_name); + void setSelectedDayCycle(const std::string& preset_name); + // Phototools additions void refreshSettings(); bool getIsPhototools() const { return getName() == PHOTOTOOLS_FLOATER; }; @@ -80,6 +110,8 @@ private: LLMultiSliderCtrl* mWLSunPos; LLComboBox* mWLPresetsCombo; LLComboBox* mWaterPresetsCombo; + LLComboBox* mDayCyclePresetsCombo; + LLCheckBoxCtrl* mUseRegionWindlight; // Phototools additions LLCheckBoxCtrl* mCtrlShaderEnable; diff --git a/indra/newview/skins/default/xui/de/floater_phototools.xml b/indra/newview/skins/default/xui/de/floater_phototools.xml index f787857e49..a31f84d35f 100644 --- a/indra/newview/skins/default/xui/de/floater_phototools.xml +++ b/indra/newview/skins/default/xui/de/floater_phototools.xml @@ -12,6 +12,7 @@ + @@ -21,12 +22,15 @@ Wasser + + Tageszykl. + -