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 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 9ca56ba96a..1b233e8ebd 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -251,7 +251,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); @@ -295,6 +295,7 @@ private: static const XML_Char* findAttribute(const XML_Char* name, const XML_Char** pairs); + bool mEmitErrors; XML_Parser mParser; @@ -317,7 +318,8 @@ private: }; -LLSDXMLParser::Impl::Impl() +LLSDXMLParser::Impl::Impl(bool emit_errors) + : mEmitErrors(emit_errors) { mParser = XML_ParserCreate(NULL); reset(); @@ -404,7 +406,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; } @@ -482,7 +487,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; } @@ -923,7 +931,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 28e0c35bee..ddde34e628 100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -163,7 +163,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 a10f7132af..65cba3ef17 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -460,8 +460,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 3a40911015..4ac7f5d783 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -312,8 +312,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 13ef48da36..3054bb5a7c 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 5deeaa1324..3377c5eeb0 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" @@ -855,7 +856,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/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]); diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp index a49560f173..95af4d64d2 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 1dcd909a4d..53fbcbda64 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -940,12 +940,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/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/app_settings/grids.fallback.xml b/indra/newview/app_settings/grids.fallback.xml index 212506aa0e..49dcc04f26 100644 --- a/indra/newview/app_settings/grids.fallback.xml +++ b/indra/newview/app_settings/grids.fallback.xml @@ -178,39 +178,10 @@ login.aurorascape.com:8002 - LastModified - 2013-02-17T18:13:40.60Z - about - http://aurorascape.com/ - gridname - AuroraScape - gridnick - AuroraScape - help - http://forum.aurorascape.com/ - helperuri - http://login.aurorascape.com:8002/ - login_identifier_types - - agent - account - - loginpage - http://login.aurorascape.com:8008/welcomescreen/index.html - loginuri - - http://login.aurorascape.com:8002/ - + DEPRECATED + TRUE name login.aurorascape.com:8002 - password - http://login.aurorascape.com:8008/forgot_pass.html - platform - Aurora - register - http://login.aurorascape.com:8008/register.html - slurl_base - hop://login.aurorascape.com:8002/ login.avination.com/ 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/posestand.xml b/indra/newview/app_settings/posestand.xml index b33c80bbb3..48ad752eb7 100644 --- a/indra/newview/app_settings/posestand.xml +++ b/indra/newview/app_settings/posestand.xml @@ -18,22 +18,22 @@ 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 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/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b378ae55fd..89c64b9741 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1676,17 +1676,6 @@ Value 0 - AgentAppearanceServiceURL - - Comment - Current Session Agent Appearance Service URL - Persist - 0 - Type - String - Value - - AlertedUnsupportedHardware Comment @@ -3702,6 +3691,28 @@ Value 0 + DebugAvatarExperimentalServerAppearanceUpdate + + Comment + Experiment with sending full cof_contents instead of cof_version + Persist + 1 + Type + Boolean + Value + 0 + + DebugAvatarAppearanceServiceURLOverride + + Comment + URL to use for baked texture requests; overrides value returned by login server. + Persist + 1 + Type + String + Value + + DebugAvatarRezTime Comment @@ -9619,7 +9630,7 @@ Change of this parameter will affect the layout of buttons in notification toast Type Boolean Value - 1 + 0 Backup 0 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/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 d19e6cd637..0ea73926a1 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 62f87ad56c..a8f2c77147 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/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/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/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() 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/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/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/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/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/fsmoneytracker.cpp b/indra/newview/fsmoneytracker.cpp index c47535743c..cd4b18668e 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 b55fd046b2..6ebff51962 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 7808e126f4..904be7b485 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 ef7feceb24..1ec5ab9e60 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/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/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/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.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 9554b408f9..a511c9b066 100644 --- a/indra/newview/kcwlinterface.h +++ b/indra/newview/kcwlinterface.h @@ -18,10 +18,14 @@ * 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 +#define KC_WLINTERFACE_H + #include "llviewerprecompiledheaders.h" #include "llsingleton.h" #include "lleventtimer.h" @@ -79,3 +83,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 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(); } @@ -3122,7 +3122,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 { @@ -3132,7 +3132,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 { @@ -4893,9 +4894,6 @@ void LLAgent::sendAgentSetAppearance() } - - if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return; - LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL; //dumpAvatarTEs( "sendAgentSetAppearance()" ); 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 e68c94c1e9..19d517b4b1 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" @@ -60,6 +61,11 @@ #include "fslslbridge.h" //-TT +#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 @@ -3635,7 +3641,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; @@ -3644,13 +3651,54 @@ 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(); + LLUUID item_id(inv_item->getUUID()); + md5.update((unsigned char*)item_id.mData, 16); item["description"] = inv_item->getActualDescription(); - item["type"] = inv_item->getActualType(); - result.append(item); + md5.update(inv_item->getActualDescription()); + item["asset_type"] = inv_item->getActualType(); + 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()) + { + 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; + } + // 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()); + md5.update((unsigned char*)linked_asset_id.mData, 16); + U32 flags = linked_item->getFlags(); + md5.update(boost::lexical_cast(flags)); + } + 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; + } + 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; } @@ -3680,14 +3728,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 = 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; @@ -3725,10 +3776,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)) { @@ -3776,6 +3827,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 e59e983dd7..4b025c0fca 100755 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -222,6 +222,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/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index d0825e843b..99359147a2 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -127,7 +127,10 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) } NvAPI_UnicodeString profile_name; - std::string app_name = LLTrans::getString("APP_NAME"); + // Use "Second Life" as app name to load the correct profile + //std::string app_name = LLTrans::getString("APP_NAME"); + std::string app_name = "Second Life"; + // llutf16string w_app_name = utf8str_to_utf16str(app_name); wsprintf(profile_name, L"%s", w_app_name.c_str()); status = NvAPI_DRS_SetCurrentGlobalProfile(hSession, profile_name); diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp index 5c1600945a..e9b685ac6e 100644 --- a/indra/newview/llassetuploadqueue.cpp +++ b/indra/newview/llassetuploadqueue.cpp @@ -71,10 +71,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 f070c837ce..59a7f6b2b0 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -229,10 +229,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) { @@ -344,9 +344,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); } @@ -491,9 +491,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 1069b1b0bc..224c6b8949 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 07664ebaeb..d994d00c19 100644 --- a/indra/newview/llclassifiedstatsresponder.cpp +++ b/indra/newview/llclassifiedstatsresponder.cpp @@ -72,8 +72,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/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/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 a270fe4d04..747f3b62b7 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -1114,7 +1114,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; } @@ -1127,7 +1127,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; @@ -1418,7 +1418,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 293256a6ca..34b30eafda 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -427,8 +427,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..3a7ca17b73 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, const LLSD& content) { sConsoleReplySignal(UNABLE_TO_SEND_COMMAND); } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 93c01e3160..dbc3fbc9aa 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -803,9 +803,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; } }; @@ -815,9 +816,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; } }; @@ -2391,10 +2393,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 8f37692dd0..c9c9a3f5eb 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -703,7 +703,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 5e23fcc027..4d3c438fab 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -223,9 +223,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) @@ -310,9 +310,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) @@ -419,9 +419,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) @@ -515,9 +515,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 bf45ef5c86..f5516f803c 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1872,14 +1872,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 7efa715b62..bd91dcd29e 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -987,9 +987,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 2c2b3218ca..9325454920 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1465,7 +1465,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 ) @@ -1477,6 +1477,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, @@ -1622,8 +1625,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 558f3047fe..537f9d67e6 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -465,9 +465,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) @@ -1515,10 +1516,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 3bb3a2961d..657f4d0a7d 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -88,7 +88,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 d2c8569001..04b2bd3e0f 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -386,7 +386,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 ) @@ -395,9 +395,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); } @@ -411,7 +411,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: @@ -549,12 +549,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 4ed0ffb2c0..fce8c09122 100644 --- a/indra/newview/llmediadataclient.cpp +++ b/indra/newview/llmediadataclient.cpp @@ -567,7 +567,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(); @@ -599,8 +599,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; } } @@ -1023,7 +1023,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(); @@ -1037,7 +1037,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 acd192498a..6b04fafb1a 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); @@ -401,7 +401,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/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 8707488431..9fccec0363 100644 --- 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() 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 2a1c6ec1cb..fc8cff487c 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/llstartup.cpp b/indra/newview/llstartup.cpp index 345a65b558..51cc58d431 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3885,7 +3885,7 @@ bool process_login_success_response(U32 &first_sim_size_x, U32 &first_sim_size_y 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/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/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 901cbacdb6..58e184725f 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -562,7 +562,10 @@ bool handleSettingF32Change(const LLSD& sdValue, F32* pValue) // ## Zi: Moved Avatar Z offset from RLVa to here bool handleAvatarZOffsetChanged(const LLSD& sdValue) { - gAgent.sendAgentSetAppearance(); + if (isAgentAvatarValid()) + { + gAgentAvatarp->computeBodySize(); + } return true; } // ## Zi: Moved Avatar Z offset from RLVa to here diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp index dae3f7a791..5d3fffd993 100644 --- a/indra/newview/llviewerdisplayname.cpp +++ b/indra/newview/llviewerdisplayname.cpp @@ -61,8 +61,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 c0f55f0519..1c906a831c 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -704,12 +704,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 @@ -793,12 +793,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 f5cbdb6509..633956699b 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -212,9 +212,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) { @@ -280,8 +280,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) { @@ -1790,9 +1793,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 895051bcd5..69a5192d4f 100644 --- 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/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index ec4b15e54b..68f0305d85 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -3224,6 +3224,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); } @@ -4788,7 +4792,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; @@ -4798,7 +4803,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; } } @@ -7665,7 +7670,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 ae50c990f3..ecd4f242b9 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2275,19 +2275,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; } @@ -2296,14 +2318,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; } @@ -2320,7 +2348,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; } } @@ -2561,7 +2593,7 @@ public: else { LL_WARNS("Avatar") << "Failed " << status << " reason " << reason << LL_ENDL; - error(status,reason); + errorWithContent(status,reason,content); } } @@ -2737,11 +2769,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(); } } @@ -2766,7 +2799,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(); } @@ -3260,8 +3293,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. } } 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 b9f08f90b4..2bf88dbc8b 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/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index fcc07781af..07ae71a3fb 100755 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -265,6 +265,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(); 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/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/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/quickprefs.cpp b/indra/newview/quickprefs.cpp index 819f2c88c7..3a555442b4 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()) @@ -140,9 +163,122 @@ void FloaterQuickPrefs::initCallbacks(void) gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&FloaterQuickPrefs::refreshSettings, this)); gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&FloaterQuickPrefs::refreshSettings, this)); } + else + { + gSavedSettings.getControl("QuickPrefsEditMode")->getSignal()->connect(boost::bind(&FloaterQuickPrefs::onEditModeChanged, this)); // Dynamic Quickprefs + } gRlvHandler.setBehaviourCallback(boost::bind(&FloaterQuickPrefs::updateRlvRestrictions, this, _1, _2)); - 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() @@ -162,62 +298,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()) { @@ -333,31 +420,110 @@ BOOL FloaterQuickPrefs::postBuild() // add global and per account settings to the dropdown gSavedSettings.applyToAll(&func); gSavedPerAccountSettings.applyToAll(&func); + mControlNameCombo->sortByName(); // 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->getSelectedValue().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(); @@ -365,199 +531,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 @@ -720,6 +816,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. + -