diff options
author | Eric Tulla <tulla@lindenlab.com> | 2008-05-14 21:37:13 +0000 |
---|---|---|
committer | Eric Tulla <tulla@lindenlab.com> | 2008-05-14 21:37:13 +0000 |
commit | e77de5d685ae441f72920f0e04d9887ee958745a (patch) | |
tree | b3736831042b20be198dc9994ba68db1e8be2a14 | |
parent | 41e1ed5b4153019b07d97f54751db53fa248d8d4 (diff) |
Result of svn merge -r 87455:87538 $SVN/branches/tulla/vc3-merge .
Passed QA as part of QAR-491.
47 files changed, 1715 insertions, 1229 deletions
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp index 5e6dfd975e..5be3919898 100644 --- a/indra/llcommon/llapr.cpp +++ b/indra/llcommon/llapr.cpp @@ -54,7 +54,7 @@ void ll_init_apr() void ll_cleanup_apr() { - llinfos << "Cleaning up APR" << llendl; + LL_INFOS("APR") << "Cleaning up APR" << LL_ENDL; if (gLogMutexp) { @@ -118,7 +118,7 @@ bool ll_apr_warn_status(apr_status_t status) if(APR_SUCCESS == status) return false; #ifndef LL_WINDOWS char buf[MAX_STRING]; /* Flawfinder: ignore */ - llwarns << "APR: " << apr_strerror(status, buf, MAX_STRING) << llendl; + LL_WARNS_ONCE("APR") << "APR: " << apr_strerror(status, buf, MAX_STRING) << LL_ENDL; #endif return true; } @@ -294,7 +294,7 @@ bool ll_apr_file_remove(const LLString& filename, apr_pool_t* pool) s = apr_file_remove(filename.c_str(), pool); if (s != APR_SUCCESS) { - lldebugs << "ll_apr_file_remove failed on file: " << filename << llendl; + LL_DEBUGS("APR") << "ll_apr_file_remove failed on file: " << filename << LL_ENDL; ll_apr_warn_status(s); return false; } @@ -308,7 +308,7 @@ bool ll_apr_file_rename(const LLString& filename, const LLString& newname, apr_p s = apr_file_rename(filename.c_str(), newname.c_str(), pool); if (s != APR_SUCCESS) { - lldebugs << "ll_apr_file_rename failed on file: " << filename << llendl; + LL_DEBUGS("APR") << "ll_apr_file_rename failed on file: " << filename << LL_ENDL; ll_apr_warn_status(s); return false; } @@ -365,7 +365,7 @@ bool ll_apr_dir_make(const LLString& dirname, apr_pool_t* pool) s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool); if (s != APR_SUCCESS) { - lldebugs << "ll_apr_dir_make failed on file: " << dirname << llendl; + LL_DEBUGS("APR") << "ll_apr_dir_make failed on file: " << dirname << LL_ENDL; ll_apr_warn_status(s); return false; } @@ -379,7 +379,7 @@ bool ll_apr_dir_remove(const LLString& dirname, apr_pool_t* pool) s = apr_file_remove(dirname.c_str(), pool); if (s != APR_SUCCESS) { - lldebugs << "ll_apr_dir_remove failed on file: " << dirname << llendl; + LL_DEBUGS("APR") << "ll_apr_dir_remove failed on file: " << dirname << LL_ENDL; ll_apr_warn_status(s); return false; } diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index 13bf368334..e635011941 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -408,6 +408,8 @@ namespace LLError LevelMap functionLevelMap; LevelMap classLevelMap; LevelMap fileLevelMap; + LevelMap tagLevelMap; + std::map<std::string, unsigned int> uniqueLogMessages; LLError::FatalFunction crashFunction; LLError::TimeFunction timeFunction; @@ -494,11 +496,17 @@ namespace LLError namespace LLError { CallSite::CallSite(ELevel level, - const char* file, int line, - const std::type_info& class_info, const char* function) + const char* file, + int line, + const std::type_info& class_info, + const char* function, + const char* broadTag, + const char* narrowTag, + bool printOnce) : mLevel(level), mFile(file), mLine(line), mClassInfo(class_info), mFunction(function), - mCached(false), mShouldLog(false) + mCached(false), mShouldLog(false), + mBroadTag(broadTag), mNarrowTag(narrowTag), mPrintOnce(printOnce) { } @@ -552,6 +560,15 @@ namespace #endif LogControlFile& e = LogControlFile::fromDirectory(dir); + + // NOTE: We want to explicitly load the file before we add it to the event timer + // that checks for changes to the file. Else, we're not actually loading the file yet, + // and most of the initialization happens without any attention being paid to the + // log control file. Not to mention that when it finally gets checked later, + // all log statements that have been evaluated already become dirty and need to be + // evaluated for printing again. So, make sure to call checkAndReload() + // before addToEventTimer(). + e.checkAndReload(); e.addToEventTimer(); } } @@ -625,6 +642,14 @@ namespace LLError g.invalidateCallSites(); s.fileLevelMap[file_name] = level; } + + void setTagLevel(const std::string& tag_name, ELevel level) + { + Globals& g = Globals::get(); + Settings& s = Settings::get(); + g.invalidateCallSites(); + s.tagLevelMap[tag_name] = level; + } } namespace { @@ -674,6 +699,8 @@ namespace LLError s.functionLevelMap.clear(); s.classLevelMap.clear(); s.fileLevelMap.clear(); + s.tagLevelMap.clear(); + s.uniqueLogMessages.clear(); setPrintLocation(config["print-location"]); setDefaultLevel(decodeLevel(config["default-level"])); @@ -689,6 +716,7 @@ namespace LLError setLevels(s.functionLevelMap, entry["functions"], level); setLevels(s.classLevelMap, entry["classes"], level); setLevels(s.fileLevelMap, entry["files"], level); + setLevels(s.tagLevelMap, entry["tags"], level); } } } @@ -850,7 +878,7 @@ namespace { return false; } - level = i->second; + level = i->second; return true; } @@ -929,9 +957,15 @@ namespace LLError ELevel compareLevel = s.defaultLevel; - checkLevelMap(s.functionLevelMap, function_name, compareLevel) + // The most specific match found will be used as the log level, + // since the computation short circuits. + // So, in increasing order of importance: + // Default < Broad Tag < File < Class < Function < Narrow Tag + ((site.mNarrowTag != NULL) ? checkLevelMap(s.tagLevelMap, site.mNarrowTag, compareLevel) : false) + || checkLevelMap(s.functionLevelMap, function_name, compareLevel) || checkLevelMap(s.classLevelMap, class_name, compareLevel) - || checkLevelMap(s.fileLevelMap, abbreviateFile(site.mFile), compareLevel); + || checkLevelMap(s.fileLevelMap, abbreviateFile(site.mFile), compareLevel) + || ((site.mBroadTag != NULL) ? checkLevelMap(s.tagLevelMap, site.mBroadTag, compareLevel) : false); site.mCached = true; g.addCallSite(site); @@ -1018,6 +1052,29 @@ namespace LLError #endif prefix << site.mFunction << ": "; } + + if (site.mPrintOnce) + { + std::map<std::string, unsigned int>::iterator messageIter = s.uniqueLogMessages.find(message); + if (messageIter != s.uniqueLogMessages.end()) + { + messageIter->second++; + unsigned int num_messages = messageIter->second; + if (num_messages == 10 || num_messages == 50 || (num_messages % 100) == 0) + { + prefix << "ONCE (" << num_messages << "th time seen): "; + } + else + { + return; + } + } + else + { + prefix << "ONCE: "; + s.uniqueLogMessages[message] = 1; + } + } prefix << message; message = prefix.str(); diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index ae41cd5244..13fb2bcebe 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -45,23 +45,23 @@ Code can log messages with constuctions like this: - llinfos << "request to fizzbip agent " << agent_id - << " denied due to timeout" << llendl; + LL_INFOS("StringTag") << "request to fizzbip agent " << agent_id + << " denied due to timeout" << LL_ENDL; Messages can be logged to one of four increasing levels of concern, using one of four "streams": - lldebugs - debug messages that are normally supressed - llinfos - informational messages that are normall shown - llwarns - warning messages that singal a problem - llerrs - error messages that are major, unrecoverable failures + LL_DEBUGS("StringTag") - debug messages that are normally supressed + LL_INFOS("StringTag") - informational messages that are normall shown + LL_WARNS("StringTag") - warning messages that singal a problem + LL_ERRS("StringTag") - error messages that are major, unrecoverable failures - The later (llerrs) automatically crashes the process after the message + The later (LL_ERRS("StringTag")) automatically crashes the process after the message is logged. Note that these "streams" are actually #define magic. Rules for use: * they cannot be used as normal streams, only to start a message - * messages written to them MUST be terminated with llendl + * messages written to them MUST be terminated with LL_ENDL * between the opening and closing, the << operator is indeed writing onto a std::ostream, so all conversions and stream formating are available @@ -85,7 +85,7 @@ { if (i > 100) { - llwanrs << "called with a big value for i: " << i << llendl; + LL_WARNS("FooBarTag") << "called with a big value for i: " << i << LL_ENDL; } ... } @@ -100,7 +100,7 @@ Lastly, logging is now very efficient in both compiled code and execution when skipped. There is no need to wrap messages, even debugging ones, in - #ifdef _DEBUG constructs. lldebugs messages are compiled into all builds, + #ifdef _DEBUG constructs. LL_DEBUGS("StringTag") messages are compiled into all builds, even release. Which means you can use them to help debug even when deployed to a real grid. */ @@ -144,7 +144,7 @@ namespace LLError // intended for public use. public: CallSite(ELevel, const char* file, int line, - const std::type_info& class_info, const char* function); + const std::type_info& class_info, const char* function, const char* broadTag, const char* narrowTag, bool printOnce); bool shouldLog() { return mCached ? mShouldLog : Log::shouldLog(*this); } @@ -156,9 +156,12 @@ namespace LLError // these describe the call site and never change const ELevel mLevel; const char* const mFile; - const int mLine; - const std::type_info& mClassInfo; + const int mLine; + const std::type_info& mClassInfo; const char* const mFunction; + const char* const mBroadTag; + const char* const mNarrowTag; + const bool mPrintOnce; // these implement a cache of the call to shouldLog() bool mCached; @@ -200,39 +203,66 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; See top of file for common usage. */ -#define lllog(level) \ +#define lllog(level, broadTag, narrowTag, once) \ { \ static LLError::CallSite _site( \ - level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__);\ + level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__, broadTag, narrowTag, once);\ if (_site.shouldLog()) \ { \ std::ostringstream* _out = LLError::Log::out(); \ (*_out) - + +// DEPRECATED: Don't call directly, use LL_ENDL instead, which actually looks like a macro #define llendl \ LLError::End(); \ LLError::Log::flush(_out, _site); \ } \ } -#define llinfos lllog(LLError::LEVEL_INFO) -#define lldebugs lllog(LLError::LEVEL_DEBUG) -#define llwarns lllog(LLError::LEVEL_WARN) -#define llerrs lllog(LLError::LEVEL_ERROR) - +// DEPRECATED: Use the new macros that allow tags and *look* like macros. +#define lldebugs lllog(LLError::LEVEL_DEBUG, NULL, NULL, false) +#define llinfos lllog(LLError::LEVEL_INFO, NULL, NULL, false) +#define llwarns lllog(LLError::LEVEL_WARN, NULL, NULL, false) +#define llerrs lllog(LLError::LEVEL_ERROR, NULL, NULL, false) #define llcont (*_out) + +// NEW Macros for debugging, allow the passing of a string tag + +// One Tag +#define LL_DEBUGS(broadTag) lllog(LLError::LEVEL_DEBUG, broadTag, NULL, false) +#define LL_INFOS(broadTag) lllog(LLError::LEVEL_INFO, broadTag, NULL, false) +#define LL_WARNS(broadTag) lllog(LLError::LEVEL_WARN, broadTag, NULL, false) +#define LL_ERRS(broadTag) lllog(LLError::LEVEL_ERROR, broadTag, NULL, false) +// Two Tags +#define LL_DEBUGS2(broadTag, narrowTag) lllog(LLError::LEVEL_DEBUG, broadTag, narrowTag, false) +#define LL_INFOS2(broadTag, narrowTag) lllog(LLError::LEVEL_INFO, broadTag, narrowTag, false) +#define LL_WARNS2(broadTag, narrowTag) lllog(LLError::LEVEL_WARN, broadTag, narrowTag, false) +#define LL_ERRS2(broadTag, narrowTag) lllog(LLError::LEVEL_ERROR, broadTag, narrowTag, false) + +// Only print the log message once (good for warnings or infos that would otherwise +// spam the log file over and over, such as tighter loops). +#define LL_DEBUGS_ONCE(broadTag) lllog(LLError::LEVEL_DEBUG, broadTag, NULL, true) +#define LL_INFOS_ONCE(broadTag) lllog(LLError::LEVEL_INFO, broadTag, NULL, true) +#define LL_WARNS_ONCE(broadTag) lllog(LLError::LEVEL_WARN, broadTag, NULL, true) +#define LL_DEBUGS2_ONCE(broadTag, narrowTag) lllog(LLError::LEVEL_DEBUG, broadTag, narrowTag, true) +#define LL_INFOS2_ONCE(broadTag, narrowTag) lllog(LLError::LEVEL_INFO, broadTag, narrowTag, true) +#define LL_WARNS2_ONCE(broadTag, narrowTag) lllog(LLError::LEVEL_WARN, broadTag, narrowTag, true) + +#define LL_ENDL llendl +#define LL_CONT (*_out) + /* Use this construct if you need to do computation in the middle of a message: - llinfos << "the agent " << agend_id; + LL_INFOS("AgentGesture") << "the agent " << agend_id; switch (f) { - case FOP_SHRUGS: llcont << "shrugs"; break; - case FOP_TAPS: llcont << "points at " << who; break; - case FOP_SAYS: llcont << "says " << message; break; + case FOP_SHRUGS: LL_CONT << "shrugs"; break; + case FOP_TAPS: LL_CONT << "points at " << who; break; + case FOP_SAYS: LL_CONT << "says " << message; break; } - llcont << " for " << t << " seconds" << llendl; + LL_CONT << " for " << t << " seconds" << LL_ENDL; Such computation is done iff the message will be logged. */ diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp index cf984e4fe2..af89a09d2f 100644 --- a/indra/llcommon/lltimer.cpp +++ b/indra/llcommon/lltimer.cpp @@ -334,7 +334,7 @@ void LLTimer::setTimerExpirySec(F32 expiration) + (U64)((F32)(expiration * gClockFrequency)); } -F32 LLTimer::getRemainingTimeF32() +F32 LLTimer::getRemainingTimeF32() const { U64 cur_ticks = get_clock_count(); if (cur_ticks > mExpirationTicks) @@ -359,7 +359,7 @@ BOOL LLTimer::checkExpirationAndReset(F32 expiration) } -BOOL LLTimer::hasExpired() +BOOL LLTimer::hasExpired() const { return (get_clock_count() >= mExpirationTicks) ? TRUE : FALSE; @@ -561,3 +561,4 @@ void LLEventTimer::updateClass() } } + diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h index 113eb1e9e3..57f9e23e7a 100644 --- a/indra/llcommon/lltimer.h +++ b/indra/llcommon/lltimer.h @@ -87,11 +87,11 @@ public: void setLastClockCount(U64 current_count); // Sets the timer so that the next elapsed call will be relative to this time void setTimerExpirySec(F32 expiration); BOOL checkExpirationAndReset(F32 expiration); - BOOL hasExpired(); + BOOL hasExpired() const; F32 getElapsedTimeAndResetF32(); // Returns elapsed time in seconds with reset F64 getElapsedTimeAndResetF64(); - F32 getRemainingTimeF32(); + F32 getRemainingTimeF32() const; static BOOL knownBadTimer(); diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index 998d19d58b..80211fb0a2 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -38,9 +38,9 @@ #include <set> #ifdef LL_RELEASE_FOR_DOWNLOAD -#define OCT_ERRS llwarns +#define OCT_ERRS LL_WARNS("OctreeErrors") #else -#define OCT_ERRS llerrs +#define OCT_ERRS LL_ERRS("OctreeErrors") #endif #define LL_OCTREE_PARANOIA_CHECK 0 diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index 1f4ea70d95..2c8e7ce8a6 100644 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -318,7 +318,7 @@ LLAssetStorage::~LLAssetStorage() void LLAssetStorage::setUpstream(const LLHost &upstream_host) { - llinfos << "AssetStorage: Setting upstream provider to " << upstream_host << llendl; + LL_DEBUGS("AppInit") << "AssetStorage: Setting upstream provider to " << upstream_host << LL_ENDL; mUpstreamHost = upstream_host; } diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp index b82bd65d2e..196aa5f8cf 100644 --- a/indra/llmessage/llhttpnode.cpp +++ b/indra/llmessage/llhttpnode.cpp @@ -426,8 +426,8 @@ void LLHTTPRegistrar::buildAllServices(LLHTTPNode& root) FactoryMap::const_iterator end = map.end(); for (; i != end; ++i) { - llinfos << "LLHTTPRegistrar::buildAllServices adding node for path " - << i->first << llendl; + LL_DEBUGS("AppInit") << "LLHTTPRegistrar::buildAllServices adding node for path " + << i->first << LL_ENDL; root.addNode(i->first, i->second->build()); } diff --git a/indra/llmessage/llmessageconfig.cpp b/indra/llmessage/llmessageconfig.cpp index ed51019a22..259daada77 100644 --- a/indra/llmessage/llmessageconfig.cpp +++ b/indra/llmessage/llmessageconfig.cpp @@ -101,15 +101,15 @@ void LLMessageConfigFile::loadFile() if (file.is_open()) { - llinfos << "Loading message.xml file at " << filename() << llendl; + LL_DEBUGS("AppInit") << "Loading message.xml file at " << filename() << LL_ENDL; LLSDSerialize::fromXML(data, file); } if (data.isUndefined()) { - llinfos << "LLMessageConfigFile::loadFile: file missing," + LL_INFOS("AppInit") << "LLMessageConfigFile::loadFile: file missing," " ill-formed, or simply undefined; not changing the" - " file" << llendl; + " file" << LL_ENDL; return; } } @@ -157,15 +157,15 @@ void LLMessageConfigFile::loadCapBans(const LLSD& data) LLSD bans = data["capBans"]; if (!bans.isMap()) { - llinfos << "LLMessageConfigFile::loadCapBans: missing capBans section" - << llendl; + LL_INFOS("AppInit") << "LLMessageConfigFile::loadCapBans: missing capBans section" + << LL_ENDL; return; } mCapBans = bans; - llinfos << "LLMessageConfigFile::loadCapBans: " - << bans.size() << " ban tests" << llendl; + LL_DEBUGS("AppInit") << "LLMessageConfigFile::loadCapBans: " + << bans.size() << " ban tests" << LL_ENDL; } void LLMessageConfigFile::loadMessageBans(const LLSD& data) @@ -173,8 +173,8 @@ void LLMessageConfigFile::loadMessageBans(const LLSD& data) LLSD bans = data["messageBans"]; if (!bans.isMap()) { - llinfos << "LLMessageConfigFile::loadMessageBans: missing messageBans section" - << llendl; + LL_INFOS("AppInit") << "LLMessageConfigFile::loadMessageBans: missing messageBans section" + << LL_ENDL; return; } @@ -198,8 +198,8 @@ void LLMessageConfig::initClass(const std::string& server_name, sServerName = server_name; sConfigDir = config_dir; (void) LLMessageConfigFile::instance(); - llinfos << "LLMessageConfig::initClass config file " - << config_dir << "/" << messageConfigFileName << llendl; + LL_DEBUGS("AppInit") << "LLMessageConfig::initClass config file " + << config_dir << "/" << messageConfigFileName << LL_ENDL; } //static diff --git a/indra/llmessage/llxfermanager.cpp b/indra/llmessage/llxfermanager.cpp index a612e181cd..fc75b3ae75 100644 --- a/indra/llmessage/llxfermanager.cpp +++ b/indra/llmessage/llxfermanager.cpp @@ -143,8 +143,8 @@ void LLXferManager::setAckThrottleBPS(const F32 bps) // Set F32 actual_rate = llmax(min_bps*1.1f, bps); - llinfos << "LLXferManager ack throttle min rate: " << min_bps << llendl; - llinfos << "LLXferManager ack throttle actual rate: " << actual_rate << llendl; + LL_DEBUGS("AppInit") << "LLXferManager ack throttle min rate: " << min_bps << LL_ENDL; + LL_DEBUGS("AppInit") << "LLXferManager ack throttle actual rate: " << actual_rate << LL_ENDL; mAckThrottle.setRate(actual_rate); } diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index 26678d61cc..04f61c53d7 100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -120,7 +120,7 @@ namespace // don't spam when agent communication disconnected already if (status != 410) { - llwarns << "error status " << status + LL_WARNS("Messaging") << "error status " << status << " for message " << mMessageName << " reason " << reason << llendl; } @@ -176,7 +176,7 @@ void LLTrustedMessageService::post(LLHTTPNode::ResponsePtr response, gMessageSystem->isTrustedMessage(name))) && !gMessageSystem->isTrustedSender(LLHost(sender))) { - llwarns << "trusted message POST to /trusted-message/" + LL_WARNS("Messaging") << "trusted message POST to /trusted-message/" << name << " from unknown or untrusted sender " << sender << llendl; response->status(403, "Unknown or untrusted sender"); @@ -326,14 +326,14 @@ LLMessageSystem::LLMessageSystem(const char *filename, U32 port, mbError = TRUE; mErrorCode = error; } - //llinfos << << "*** port: " << mPort << llendl; +// LL_DEBUGS("Messaging") << << "*** port: " << mPort << llendl; // // Create the data structure that we can poll on // if (!gAPRPoolp) { - llerrs << "No APR pool before message system initialization!" << llendl; + LL_ERRS("Messaging") << "No APR pool before message system initialization!" << llendl; ll_init_apr(); } apr_socket_t *aprSocketp = NULL; @@ -369,7 +369,7 @@ void LLMessageSystem::loadTemplateFile(const char* filename) { if(!filename) { - llerrs << "No template filename specified" << llendl; + LL_ERRS("Messaging") << "No template filename specified" << llendl; mbError = TRUE; return; } @@ -377,7 +377,7 @@ void LLMessageSystem::loadTemplateFile(const char* filename) std::string template_body; if(!_read_file_into_string(template_body, filename)) { - llwarns << "Failed to open template: " << filename << llendl; + LL_WARNS("Messaging") << "Failed to open template: " << filename << llendl; mbError = TRUE; return; } @@ -588,7 +588,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) // Ones that are non-zero but below the minimum packet size are worrisome. if (receive_size > 0) { - llwarns << "Invalid (too short) packet discarded " << receive_size << llendl; + LL_WARNS("Messaging") << "Invalid (too short) packet discarded " << receive_size << llendl; callExceptionFunc(MX_PACKET_TOO_SHORT); } // no data in packet receive buffer @@ -612,7 +612,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) { // mal-formed packet. ignore it and continue with // the next one - llwarns << "Malformed packet received. Packet size " + LL_WARNS("Messaging") << "Malformed packet received. Packet size " << receive_size << " with invalid no. of acks " << acks << llendl; valid_packet = FALSE; @@ -642,7 +642,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) memcpy(&mem_id, &mTrueReceiveBuffer[true_rcv_size], /* Flawfinder: ignore*/ sizeof(TPACKETID)); packet_id = ntohl(mem_id); - //llinfos << "got ack: " << packet_id << llendl; + //LL_INFOS("Messaging") << "got ack: " << packet_id << llendl; cdp->ackReliablePacket(packet_id); } if (!cdp->getUnackedPacketCount()) @@ -671,7 +671,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) // TESTING CODE //if(mCircuitInfo.mCurrentCircuit->mHost != host) //{ - // llwarns << "DISCARDED PACKET HOST MISMATCH! HOST: " + // LL_WARNS("Messaging") << "DISCARDED PACKET HOST MISMATCH! HOST: " // << host << " CIRCUIT: " // << mCircuitInfo.mCurrentCircuit->mHost // << llendl; @@ -681,7 +681,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) cdp->collectRAck(mCurrentRecvPacketID); } - //llinfos << "Discarding duplicate resend from " << host << llendl; + LL_DEBUGS("Messaging") << "Discarding duplicate resend from " << host << llendl; if(mVerboseLog) { std::ostringstream str; @@ -693,7 +693,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) << " resent " << ((acks > 0) ? "acks" : "") << " DISCARD DUPLICATE"; - llinfos << str.str() << llendl; + LL_INFOS("Messaging") << str.str() << llendl; } mPacketsIn++; valid_packet = FALSE; @@ -740,7 +740,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) valid_packet && mTemplateMessageReader->isBanned(cdp && cdp->getTrusted())) { - llwarns << "LLMessageSystem::checkMessages " + LL_WARNS("Messaging") << "LLMessageSystem::checkMessages " << "received banned message " << mTemplateMessageReader->getMessageName() << " from " @@ -764,7 +764,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) if (valid_packet) { // enable this for output of message names - //llinfos << "< \"" << mTemplateMessageReader->getMessageName() + //LL_INFOS("Messaging") << "< \"" << mTemplateMessageReader->getMessageName() //<< "\"" << llendl; /* Code for dumping the complete contents of a message. Keep for future use in optimizing messages. @@ -773,23 +773,23 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) static char* object_update = LLMessageStringTable::getInstance()->getString("ObjectUpdate"); if(object_update == mTemplateMessageReader->getMessageName() ) { - llinfos << "ObjectUpdate:" << llendl; + LL_INFOS("Messaging") << "ObjectUpdate:" << llendl; U32 i; - llinfos << " Zero Encoded: " << zero_unexpanded_size << llendl; + LL_INFOS("Messaging") << " Zero Encoded: " << zero_unexpanded_size << llendl; for( i = 0; i<zero_unexpanded_size; i++ ) { - llinfos << " " << i << ": " << (U32) zero_unexpanded_buffer[i] << llendl; + LL_INFOS("Messaging") << " " << i << ": " << (U32) zero_unexpanded_buffer[i] << llendl; } - llinfos << "" << llendl; + LL_INFOS("Messaging") << "" << llendl; - llinfos << " Zero Unencoded: " << receive_size << llendl; + LL_INFOS("Messaging") << " Zero Unencoded: " << receive_size << llendl; for( i = 0; i<receive_size; i++ ) { - llinfos << " " << i << ": " << (U32) buffer[i] << llendl; + LL_INFOS("Messaging") << " " << i << ": " << (U32) buffer[i] << llendl; } - llinfos << "" << llendl; + LL_INFOS("Messaging") << "" << llendl; - llinfos << " Blocks and variables: " << llendl; + LL_INFOS("Messaging") << " Blocks and variables: " << llendl; S32 byte_count = 0; for (LLMessageTemplate::message_block_map_t::iterator iter = mCurrentRMessageTemplate->mMemberBlocks.begin(), @@ -807,7 +807,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) if( getNumberOfBlocksFast( block_name ) < 1 ) { - llinfos << var_name << " has no blocks" << llendl; + LL_INFOS("Messaging") << var_name << " has no blocks" << llendl; } for( S32 blocknum = 0; blocknum < getNumberOfBlocksFast( block_name ); blocknum++ ) { @@ -820,7 +820,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) if (!msg_block_data) { sprintf(errmsg, "Block %s #%d not in message %s", block_name, blocknum, mCurrentRMessageData->mName); - llerrs << errmsg << llendl; + LL_ERRS("Messaging") << errmsg << llendl; } LLMsgVarData vardata = msg_block_data->mMemberVarData[vnamep]; @@ -828,7 +828,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) if (!vardata.getName()) { sprintf(errmsg, "Variable %s not in message %s block %s", vnamep, mCurrentRMessageData->mName, bnamep); - llerrs << errmsg << llendl; + LL_ERRS("Messaging") << errmsg << llendl; } const S32 vardata_size = vardata.getSize(); @@ -837,17 +837,17 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) for( i = 0; i < vardata_size; i++ ) { byte_count++; - llinfos << block_name << " " << var_name << " [" << blocknum << "][" << i << "]= " << (U32)(((U8*)vardata.getData())[i]) << llendl; + LL_INFOS("Messaging") << block_name << " " << var_name << " [" << blocknum << "][" << i << "]= " << (U32)(((U8*)vardata.getData())[i]) << llendl; } } else { - llinfos << block_name << " " << var_name << " [" << blocknum << "] 0 bytes" << llendl; + LL_INFOS("Messaging") << block_name << " " << var_name << " [" << blocknum << "] 0 bytes" << llendl; } } } } - llinfos << "Byte count =" << byte_count << llendl; + LL_INFOS("Messaging") << "Byte count =" << byte_count << llendl; } } */ @@ -871,7 +871,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count ) { if (mbProtected && (!cdp)) { - llwarns << "Invalid Packet from invalid circuit " << host << llendl; + LL_WARNS("Messaging") << "Invalid Packet from invalid circuit " << host << llendl; mOffCircuitPackets++; } else @@ -944,7 +944,7 @@ void LLMessageSystem::processAcks() if (!mDenyTrustedCircuitSet.empty()) { - llinfos << "Sending queued DenyTrustedCircuit messages." << llendl; + LL_INFOS("Messaging") << "Sending queued DenyTrustedCircuit messages." << llendl; for (host_set_t::iterator hostit = mDenyTrustedCircuitSet.begin(); hostit != mDenyTrustedCircuitSet.end(); ++hostit) { reallySendDenyTrustedCircuit(*hostit); @@ -1176,7 +1176,7 @@ LLHTTPClient::ResponderPtr LLMessageSystem::createResponder(const std::string& n { // These messages aren't really unreliable, they just weren't // explicitly sent as reliable, so they don't have a callback -// llwarns << "LLMessageSystem::sendMessage: Sending unreliable " +// LL_WARNS("Messaging") << "LLMessageSystem::sendMessage: Sending unreliable " // << mMessageBuilder->getMessageName() << " message via HTTP" // << llendl; return new LLFnPtrResponder( @@ -1213,10 +1213,10 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) // yup! don't send packets to an unknown circuit if(mVerboseLog) { - llinfos << "MSG: -> " << host << "\tUNKNOWN CIRCUIT:\t" + LL_INFOS_ONCE("Messaging") << "MSG: -> " << host << "\tUNKNOWN CIRCUIT:\t" << mMessageBuilder->getMessageName() << llendl; } - llwarns << "sendMessage - Trying to send " + LL_WARNS_ONCE("Messaging") << "sendMessage - Trying to send " << mMessageBuilder->getMessageName() << " on unknown circuit " << host << llendl; return 0; @@ -1236,10 +1236,10 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) // nope. don't send to dead circuits if(mVerboseLog) { - llinfos << "MSG: -> " << host << "\tDEAD CIRCUIT\t\t" + LL_INFOS("Messaging") << "MSG: -> " << host << "\tDEAD CIRCUIT\t\t" << mMessageBuilder->getMessageName() << llendl; } - llwarns << "sendMessage - Trying to send message " + LL_WARNS("Messaging") << "sendMessage - Trying to send message " << mMessageBuilder->getMessageName() << " to dead circuit " << host << llendl; return 0; @@ -1283,7 +1283,7 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) if((mMessageBuilder->getMessageName() != _PREHASH_ChildAgentUpdate) && (mMessageBuilder->getMessageName() != _PREHASH_SendXferPacket)) { - llwarns << "sendMessage - Trying to send " + LL_WARNS("Messaging") << "sendMessage - Trying to send " << ((buffer_length > 4000) ? "EXTRA " : "") << "BIG message " << mMessageBuilder->getMessageName() << " - " << buffer_length << llendl; @@ -1348,7 +1348,7 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) // append_acout_count is incorrect or that // MAX_BUFFER_SIZE has fallen below MTU which is bad // and probably programmer error. - llerrs << "Buffer packing failed due to size.." << llendl; + LL_ERRS("Messaging") << "Buffer packing failed due to size.." << llendl; } } @@ -1389,13 +1389,9 @@ S32 LLMessageSystem::sendMessage(const LLHost &host) std::ostream_iterator<TPACKETID> append(str, " "); std::copy(acks.begin(), acks.end(), append); } - llinfos << str.str() << llendl; + LL_INFOS("Messaging") << str.str() << llendl; } - /*lldebugst(LLERR_MESSAGE) << "MessageSent at: " << (S32)totalTime() - << "," << mMessageBuilder->getMessageName() - << " to " << host - << llendl;*/ mPacketsOut++; mBytesOut += buffer_length; @@ -1417,7 +1413,7 @@ void LLMessageSystem::logMsgFromInvalidCircuit( const LLHost& host, BOOL recv_re << nullToEmpty(mMessageReader->getMessageName()) << (recv_reliable ? " reliable" : "") << " REJECTED"; - llinfos << str.str() << llendl; + LL_INFOS("Messaging") << str.str() << llendl; } // nope! // cout << "Rejecting unexpected message " << mCurrentMessageTemplate->mName << " from " << hex << ip << " , " << dec << port << endl; @@ -1425,7 +1421,7 @@ void LLMessageSystem::logMsgFromInvalidCircuit( const LLHost& host, BOOL recv_re // Keep track of rejected messages as well if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM) { - llwarns << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl; + LL_WARNS("Messaging") << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl; } else { @@ -1444,13 +1440,13 @@ S32 LLMessageSystem::sendMessage( { if (!(host.isOk())) { - llwarns << "trying to send message to invalid host" << llendl; + LL_WARNS("Messaging") << "trying to send message to invalid host" << llendl; return 0; } newMessage(name); if (mMessageBuilder != mLLSDMessageBuilder) { - llwarns << "trying to send llsd message when builder is not LLSD!" + LL_WARNS("Messaging") << "trying to send llsd message when builder is not LLSD!" << llendl; return 0; } @@ -1466,7 +1462,7 @@ void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host ) // if it's received on a trusted circuit. JC if (strcmp(mMessageReader->getMessageName(), "RequestTrustedCircuit")) { - llwarns << "Received trusted message on untrusted circuit. " + LL_WARNS("Messaging") << "Received trusted message on untrusted circuit. " << "Will reply with deny. " << "Message: " << nullToEmpty(mMessageReader->getMessageName()) << " Host: " << host << llendl; @@ -1474,7 +1470,7 @@ void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host ) if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM) { - llwarns << "got more than " << MAX_MESSAGE_COUNT_NUM + LL_WARNS("Messaging") << "got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl; } @@ -1494,7 +1490,7 @@ void LLMessageSystem::logValidMsg(LLCircuitData *cdp, const LLHost& host, BOOL r { if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM) { - llwarns << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl; + LL_WARNS("Messaging") << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl; } else { @@ -1523,7 +1519,7 @@ void LLMessageSystem::logValidMsg(LLCircuitData *cdp, const LLHost& host, BOOL r << (recv_reliable ? " reliable" : "") << (recv_resent ? " resent" : "") << (recv_acks ? " acks" : ""); - llinfos << str.str() << llendl; + LL_INFOS("Messaging") << str.str() << llendl; } } @@ -1533,48 +1529,48 @@ void LLMessageSystem::sanityCheck() // if (!mCurrentRMessageData) // { -// llerrs << "mCurrentRMessageData is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentRMessageData is NULL" << llendl; // } // if (!mCurrentRMessageTemplate) // { -// llerrs << "mCurrentRMessageTemplate is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentRMessageTemplate is NULL" << llendl; // } // if (!mCurrentRTemplateBlock) // { -// llerrs << "mCurrentRTemplateBlock is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentRTemplateBlock is NULL" << llendl; // } // if (!mCurrentRDataBlock) // { -// llerrs << "mCurrentRDataBlock is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentRDataBlock is NULL" << llendl; // } // if (!mCurrentSMessageData) // { -// llerrs << "mCurrentSMessageData is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentSMessageData is NULL" << llendl; // } // if (!mCurrentSMessageTemplate) // { -// llerrs << "mCurrentSMessageTemplate is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentSMessageTemplate is NULL" << llendl; // } // if (!mCurrentSTemplateBlock) // { -// llerrs << "mCurrentSTemplateBlock is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentSTemplateBlock is NULL" << llendl; // } // if (!mCurrentSDataBlock) // { -// llerrs << "mCurrentSDataBlock is NULL" << llendl; +// LL_ERRS("Messaging") << "mCurrentSDataBlock is NULL" << llendl; // } } void LLMessageSystem::showCircuitInfo() { - llinfos << mCircuitInfo << llendl; + LL_INFOS("Messaging") << mCircuitInfo << llendl; } @@ -1624,7 +1620,7 @@ void LLMessageSystem::enableCircuit(const LLHost &host, BOOL trusted) void LLMessageSystem::disableCircuit(const LLHost &host) { - llinfos << "LLMessageSystem::disableCircuit for " << host << llendl; + LL_INFOS("Messaging") << "LLMessageSystem::disableCircuit for " << host << llendl; U32 code = gMessageSystem->findCircuitCode( host ); // Don't need to do this, as we're removing the circuit info anyway - djs 01/28/03 @@ -1637,7 +1633,7 @@ void LLMessageSystem::disableCircuit(const LLHost &host) code_session_map_t::iterator it = mCircuitCodes.find(code); if(it != mCircuitCodes.end()) { - llinfos << "Circuit " << code << " removed from list" << llendl; + LL_INFOS("Messaging") << "Circuit " << code << " removed from list" << llendl; //mCircuitCodes.removeData(code); mCircuitCodes.erase(it); } @@ -1653,7 +1649,7 @@ void LLMessageSystem::disableCircuit(const LLHost &host) U32 old_port = (U32)(ip_port & (U64)0xFFFFFFFF); U32 old_ip = (U32)(ip_port >> 32); - llinfos << "Host " << LLHost(old_ip, old_port) << " circuit " << code << " removed from lookup table" << llendl; + LL_INFOS("Messaging") << "Host " << LLHost(old_ip, old_port) << " circuit " << code << " removed from lookup table" << llendl; gMessageSystem->mIPPortToCircuitCode.erase(ip_port); } mCircuitInfo.removeCircuitData(host); @@ -1663,7 +1659,7 @@ void LLMessageSystem::disableCircuit(const LLHost &host) // Sigh, since we can open circuits which don't have circuit // codes, it's possible for this to happen... - llwarns << "Couldn't find circuit code for " << host << llendl; + LL_WARNS("Messaging") << "Couldn't find circuit code for " << host << llendl; } } @@ -1694,7 +1690,7 @@ BOOL LLMessageSystem::checkCircuitBlocked(const U32 circuit) if (!host.isOk()) { - //llinfos << "checkCircuitBlocked: Unknown circuit " << circuit << llendl; + LL_DEBUGS("Messaging") << "checkCircuitBlocked: Unknown circuit " << circuit << llendl; return TRUE; } @@ -1705,7 +1701,7 @@ BOOL LLMessageSystem::checkCircuitBlocked(const U32 circuit) } else { - llinfos << "checkCircuitBlocked(circuit): Unknown host - " << host << llendl; + LL_INFOS("Messaging") << "checkCircuitBlocked(circuit): Unknown host - " << host << llendl; return FALSE; } } @@ -1716,7 +1712,7 @@ BOOL LLMessageSystem::checkCircuitAlive(const U32 circuit) if (!host.isOk()) { - //llinfos << "checkCircuitAlive: Unknown circuit " << circuit << llendl; + LL_DEBUGS("Messaging") << "checkCircuitAlive: Unknown circuit " << circuit << llendl; return FALSE; } @@ -1727,7 +1723,7 @@ BOOL LLMessageSystem::checkCircuitAlive(const U32 circuit) } else { - llinfos << "checkCircuitAlive(circuit): Unknown host - " << host << llendl; + LL_INFOS("Messaging") << "checkCircuitAlive(circuit): Unknown host - " << host << llendl; return FALSE; } } @@ -1741,7 +1737,7 @@ BOOL LLMessageSystem::checkCircuitAlive(const LLHost &host) } else { - //llinfos << "checkCircuitAlive(host): Unknown host - " << host << llendl; + LL_DEBUGS("Messaging") << "checkCircuitAlive(host): Unknown host - " << host << llendl; return FALSE; } } @@ -1891,7 +1887,7 @@ void LLMessageSystem::processAssignCircuitCode(LLMessageSystem* msg, void**) msg->getUUIDFast(_PREHASH_CircuitCode, _PREHASH_SessionID, session_id); if(session_id != msg->getMySessionID()) { - llwarns << "AssignCircuitCode, bad session id. Expecting " + LL_WARNS("Messaging") << "AssignCircuitCode, bad session id. Expecting " << msg->getMySessionID() << " but got " << session_id << llendl; return; @@ -1900,11 +1896,11 @@ void LLMessageSystem::processAssignCircuitCode(LLMessageSystem* msg, void**) msg->getU32Fast(_PREHASH_CircuitCode, _PREHASH_Code, code); if (!code) { - llerrs << "Assigning circuit code of zero!" << llendl; + LL_ERRS("Messaging") << "Assigning circuit code of zero!" << llendl; } msg->mOurCircuitCode = code; - llinfos << "Circuit code " << code << " assigned." << llendl; + LL_INFOS("Messaging") << "Circuit code " << code << " assigned." << llendl; } */ @@ -1928,20 +1924,20 @@ bool LLMessageSystem::addCircuitCode(U32 code, const LLUUID& session_id) { if(!code) { - llwarns << "addCircuitCode: zero circuit code" << llendl; + LL_WARNS("Messaging") << "addCircuitCode: zero circuit code" << llendl; return false; } code_session_map_t::iterator it = mCircuitCodes.find(code); if(it == mCircuitCodes.end()) { - llinfos << "New circuit code " << code << " added" << llendl; + LL_INFOS("Messaging") << "New circuit code " << code << " added" << llendl; //msg->mCircuitCodes[circuit_code] = circuit_code; mCircuitCodes.insert(code_session_map_t::value_type(code, session_id)); } else { - llinfos << "Duplicate circuit code " << code << " added" << llendl; + LL_INFOS("Messaging") << "Duplicate circuit code " << code << " added" << llendl; } return true; } @@ -1973,7 +1969,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, if(it == msg->mCircuitCodes.end()) { // Whoah, abort! We don't know anything about this circuit code. - llwarns << "UseCircuitCode for " << circuit_code_in + LL_WARNS("Messaging") << "UseCircuitCode for " << circuit_code_in << " received without AddCircuitCode message - aborting" << llendl; return; @@ -1985,7 +1981,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, msg->getUUIDFast(_PREHASH_CircuitCode, _PREHASH_SessionID, session_id); if(session_id != (*it).second) { - llwarns << "UseCircuitCode unmatched session id. Got " + LL_WARNS("Messaging") << "UseCircuitCode unmatched session id. Got " << session_id << " but expected " << (*it).second << llendl; return; @@ -2000,7 +1996,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, if ((ip_port_old == ip_port_in) && (circuit_code_old == circuit_code_in)) { // Current information is the same as incoming info, ignore - llinfos << "Got duplicate UseCircuitCode for circuit " << circuit_code_in << " to " << msg->getSender() << llendl; + LL_INFOS("Messaging") << "Got duplicate UseCircuitCode for circuit " << circuit_code_in << " to " << msg->getSender() << llendl; return; } @@ -2010,25 +2006,25 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, msg->mIPPortToCircuitCode.erase(ip_port_old); U32 old_port = (U32)(ip_port_old & (U64)0xFFFFFFFF); U32 old_ip = (U32)(ip_port_old >> 32); - llinfos << "Removing derelict lookup entry for circuit " << circuit_code_old << " to " << LLHost(old_ip, old_port) << llendl; + LL_INFOS("Messaging") << "Removing derelict lookup entry for circuit " << circuit_code_old << " to " << LLHost(old_ip, old_port) << llendl; } if (circuit_code_old) { LLHost cur_host(ip, port); - llwarns << "Disabling existing circuit for " << cur_host << llendl; + LL_WARNS("Messaging") << "Disabling existing circuit for " << cur_host << llendl; msg->disableCircuit(cur_host); if (circuit_code_old == circuit_code_in) { - llwarns << "Asymmetrical circuit to ip/port lookup!" << llendl; - llwarns << "Multiple circuit codes for " << cur_host << " probably!" << llendl; - llwarns << "Permanently disabling circuit" << llendl; + LL_WARNS("Messaging") << "Asymmetrical circuit to ip/port lookup!" << llendl; + LL_WARNS("Messaging") << "Multiple circuit codes for " << cur_host << " probably!" << llendl; + LL_WARNS("Messaging") << "Permanently disabling circuit" << llendl; return; } else { - llwarns << "Circuit code changed for " << msg->getSender() + LL_WARNS("Messaging") << "Circuit code changed for " << msg->getSender() << " from " << circuit_code_old << " to " << circuit_code_in << llendl; } @@ -2070,7 +2066,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, msg->mIPPortToCircuitCode[ip_port_in] = circuit_code_in; msg->mCircuitCodeToIPPort[circuit_code_in] = ip_port_in; - llinfos << "Circuit code " << circuit_code_in << " from " + LL_INFOS("Messaging") << "Circuit code " << circuit_code_in << " from " << msg->getSender() << " for agent " << id << " in session " << session_id << llendl; @@ -2083,7 +2079,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg, } else { - llwarns << "Got zero circuit code in use_circuit_code" << llendl; + LL_WARNS("Messaging") << "Got zero circuit code in use_circuit_code" << llendl; } } @@ -2105,7 +2101,7 @@ void LLMessageSystem::processError(LLMessageSystem* msg, void**) msg->getString("Data", "Message", MTUBYTES, buffer); error_message.assign(buffer); - llwarns << "Message error from " << msg->getSender() << " - " + LL_WARNS("Messaging") << "Message error from " << msg->getSender() << " - " << error_code << " " << error_token << " " << error_id << " \"" << error_system << "\" \"" << error_message << "\"" << llendl; } @@ -2143,7 +2139,7 @@ void LLMessageSystem::dispatch( gMessageSystem->mMessageTemplates.end()) && !LLMessageConfig::isValidMessage(msg_name)) { - llwarns << "Ignoring unknown message " << msg_name << llendl; + LL_WARNS("Messaging") << "Ignoring unknown message " << msg_name << llendl; responsep->notFound("Invalid message name"); return; } @@ -2153,12 +2149,12 @@ void LLMessageSystem::dispatch( const LLHTTPNode* handler = messageRootNode().traverse(path, context); if (!handler) { - llwarns << "LLMessageService::dispatch > no handler for " + LL_WARNS("Messaging") << "LLMessageService::dispatch > no handler for " << path << llendl; return; } // enable this for output of message names - //llinfos << "< \"" << msg_name << "\"" << llendl; + //LL_INFOS("Messaging") << "< \"" << msg_name << "\"" << llendl; //lldebugs << "data: " << LLSDNotationStreamer(message) << llendl; handler->post(responsep, context, message); @@ -2177,9 +2173,9 @@ static void check_for_unrecognized_messages( if (templates.find(name) == templates.end()) { - llinfos << " " << type + LL_INFOS("AppInit") << " " << type << " ban list contains unrecognized message " - << name << llendl; + << name << LL_ENDL; } } } @@ -2187,7 +2183,7 @@ static void check_for_unrecognized_messages( void LLMessageSystem::setMessageBans( const LLSD& trusted, const LLSD& untrusted) { - llinfos << "LLMessageSystem::setMessageBans:" << llendl; + LL_DEBUGS("AppInit") << "LLMessageSystem::setMessageBans:" << LL_ENDL; bool any_set = false; for (message_template_name_map_t::iterator iter = mMessageTemplates.begin(), @@ -2207,17 +2203,17 @@ void LLMessageSystem::setMessageBans( if (ban_from_trusted || ban_from_untrusted) { - llinfos << " " << name << " banned from " + LL_INFOS("AppInit") << " " << name << " banned from " << (ban_from_trusted ? "TRUSTED " : " ") << (ban_from_untrusted ? "UNTRUSTED " : " ") - << llendl; + << LL_ENDL; any_set = true; } } if (!any_set) { - llinfos << " no messages banned" << llendl; + LL_DEBUGS("AppInit") << " no messages banned" << LL_ENDL; } check_for_unrecognized_messages("trusted", trusted, mMessageTemplates); @@ -2267,7 +2263,7 @@ S32 LLMessageSystem::sendError( } else { - llwarns << "Data and message were too large -- data removed." + LL_WARNS("Messaging") << "Data and message were too large -- data removed." << llendl; addBinaryData("Data", NULL, 0); } @@ -2288,7 +2284,7 @@ void process_packet_ack(LLMessageSystem *msgsystem, void** /*user_data*/) for (S32 i = 0; i < ack_count; i++) { msgsystem->getU32Fast(_PREHASH_Packets, _PREHASH_ID, packet_id, i); -// llinfos << "ack recvd' from " << host << " for packet " << (TPACKETID)packet_id << llendl; +// LL_DEBUGS("Messaging") << "ack recvd' from " << host << " for packet " << (TPACKETID)packet_id << llendl; cdp->ackReliablePacket(packet_id); } if (!cdp->getUnackedPacketCount()) @@ -2309,12 +2305,12 @@ void process_log_messages(LLMessageSystem* msg, void**) if (log_message) { - llinfos << "Starting logging via message" << llendl; + LL_INFOS("Messaging") << "Starting logging via message" << llendl; msg->startLogging(); } else { - llinfos << "Stopping logging via message" << llendl; + LL_INFOS("Messaging") << "Stopping logging via message" << llendl; msg->stopLogging(); } }*/ @@ -2333,7 +2329,7 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **) LLCircuitData *cdp = msg->mCircuitInfo.findCircuit(msg->getSender()); if (!cdp) { - llwarns << "Attempt to create trusted circuit without circuit data: " + LL_WARNS("Messaging") << "Attempt to create trusted circuit without circuit data: " << msg->getSender() << llendl; return; } @@ -2358,7 +2354,7 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **) if(msg->isMatchingDigestForWindowAndUUIDs(their_digest, TRUST_TIME_WINDOW, local_id, remote_id)) { cdp->setTrusted(TRUE); - llinfos << "Trusted digest from " << msg->getSender() << llendl; + LL_INFOS("Messaging") << "Trusted digest from " << msg->getSender() << llendl; return; } else if (cdp->getTrusted()) @@ -2367,13 +2363,13 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **) // This means that this could just be the result of a stale deny sent from a while back, and // the message system is being slow. Don't bother sending the deny, as it may continually // ping-pong back and forth on a very hosed circuit. - llwarns << "Ignoring bad digest from known trusted circuit: " << their_digest + LL_WARNS("Messaging") << "Ignoring bad digest from known trusted circuit: " << their_digest << " host: " << msg->getSender() << llendl; return; } else { - llwarns << "Bad digest from known circuit: " << their_digest + LL_WARNS("Messaging") << "Bad digest from known circuit: " << their_digest << " host: " << msg->getSender() << llendl; msg->sendDenyTrustedCircuit(msg->getSender()); return; @@ -2410,7 +2406,7 @@ void process_deny_trusted_circuit(LLMessageSystem *msg, void **) // spin. // *TODO: probably should keep a count of number of resends // per circuit, and stop resending after a while. - llinfos << "Got DenyTrustedCircuit. Sending CreateTrustedCircuit to " + LL_INFOS("Messaging") << "Got DenyTrustedCircuit. Sending CreateTrustedCircuit to " << msg->getSender() << llendl; msg->sendCreateTrustedCircuit(msg->getSender(), local_id, remote_id); } @@ -2499,7 +2495,7 @@ BOOL start_messaging_system( if (!gMessageSystem) { - llerrs << "Messaging system initialization failed." << llendl; + LL_ERRS("AppInit") << "Messaging system initialization failed." << LL_ENDL; return FALSE; } @@ -2518,12 +2514,12 @@ BOOL start_messaging_system( { if (gMessageSystem->mMessageFileVersionNumber != gPrehashVersionNumber) { - llinfos << "Message template version does not match prehash version number" << llendl; - llinfos << "Run simulator with -prehash command line option to rebuild prehash data" << llendl; + LL_INFOS("AppInit") << "Message template version does not match prehash version number" << LL_ENDL; + LL_INFOS("AppInit") << "Run simulator with -prehash command line option to rebuild prehash data" << llendl; } else { - llinfos << "Message template version matches prehash version number" << llendl; + LL_DEBUGS("AppInit") << "Message template version matches prehash version number" << llendl; } } @@ -2569,7 +2565,7 @@ void LLMessageSystem::startLogging() str << "\t<-\tincoming message" <<std::endl; str << "\t->\toutgoing message" << std::endl; str << " <> host size zero id name"; - llinfos << str.str() << llendl; + LL_INFOS("Messaging") << str.str() << llendl; } void LLMessageSystem::stopLogging() @@ -2577,7 +2573,7 @@ void LLMessageSystem::stopLogging() if(mVerboseLog) { mVerboseLog = FALSE; - llinfos << "END MESSAGE LOG" << llendl; + LL_INFOS("Messaging") << "END MESSAGE LOG" << llendl; } } @@ -2683,7 +2679,7 @@ void end_messaging_system() std::ostringstream str; gMessageSystem->summarizeLogs(str); - llinfos << str.str().c_str() << llendl; + LL_INFOS("Messaging") << str.str().c_str() << llendl; delete gMessageSystem; gMessageSystem = NULL; @@ -2735,7 +2731,7 @@ void LLMessageSystem::dumpReceiveCounts() if(mNumMessageCounts > 0) { - llinfos << "Dump: " << mNumMessageCounts << " messages processed in " << mReceiveTime << " seconds" << llendl; + LL_DEBUGS("Messaging") << "Dump: " << mNumMessageCounts << " messages processed in " << mReceiveTime << " seconds" << llendl; for (message_template_name_map_t::const_iterator iter = mMessageTemplates.begin(), end = mMessageTemplates.end(); iter != end; iter++) @@ -2743,7 +2739,7 @@ void LLMessageSystem::dumpReceiveCounts() const LLMessageTemplate* mt = iter->second; if (mt->mReceiveCount > 0) { - llinfos << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes + LL_INFOS("Messaging") << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes << " Invalid: " << std::setw(3) << mt->mReceiveInvalid << " " << mt->mName << " " << llround(100 * mt->mDecodeTimeThisFrame / mReceiveTime) << "%" << llendl; } } @@ -2860,7 +2856,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size) { if ((*data_size ) < LL_MINIMUM_VALID_PACKET_SIZE) { - llwarns << "zeroCodeExpand() called with data_size of " << *data_size + LL_WARNS("Messaging") << "zeroCodeExpand() called with data_size of " << *data_size << llendl; } @@ -2900,7 +2896,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size) { if (outptr > (&mEncodedRecvBuffer[MAX_BUFFER_SIZE-1])) { - llwarns << "attempt to write past reasonable encoded buffer size 1" << llendl; + LL_WARNS("Messaging") << "attempt to write past reasonable encoded buffer size 1" << llendl; callExceptionFunc(MX_WROTE_PAST_BUFFER_SIZE); outptr = mEncodedRecvBuffer; break; @@ -2912,7 +2908,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size) *outptr++ = *inptr++; if (outptr > (&mEncodedRecvBuffer[MAX_BUFFER_SIZE-256])) { - llwarns << "attempt to write past reasonable encoded buffer size 2" << llendl; + LL_WARNS("Messaging") << "attempt to write past reasonable encoded buffer size 2" << llendl; callExceptionFunc(MX_WROTE_PAST_BUFFER_SIZE); outptr = mEncodedRecvBuffer; count = -1; @@ -2931,7 +2927,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size) { if (outptr > (&mEncodedRecvBuffer[MAX_BUFFER_SIZE-(*inptr)])) { - llwarns << "attempt to write past reasonable encoded buffer size 3" << llendl; + LL_WARNS("Messaging") << "attempt to write past reasonable encoded buffer size 3" << llendl; callExceptionFunc(MX_WROTE_PAST_BUFFER_SIZE); outptr = mEncodedRecvBuffer; } @@ -2954,7 +2950,7 @@ void LLMessageSystem::addTemplate(LLMessageTemplate *templatep) { if (mMessageTemplates.count(templatep->mName) > 0) { - llerrs << templatep->mName << " already used as a template name!" + LL_ERRS("Messaging") << templatep->mName << " already used as a template name!" << llendl; } mMessageTemplates[templatep->mName] = templatep; @@ -2971,7 +2967,7 @@ void LLMessageSystem::setHandlerFuncFast(const char *name, void (*handler_func)( } else { - llerrs << name << " is not a known message name!" << llendl; + LL_ERRS("Messaging") << name << " is not a known message name!" << llendl; } } @@ -2983,7 +2979,7 @@ bool LLMessageSystem::callHandler(const char *name, iter = mMessageTemplates.find(name); if(iter == mMessageTemplates.end()) { - llwarns << "LLMessageSystem::callHandler: unknown message " + LL_WARNS("Messaging") << "LLMessageSystem::callHandler: unknown message " << name << llendl; return false; } @@ -2991,7 +2987,7 @@ bool LLMessageSystem::callHandler(const char *name, const LLMessageTemplate* msg_template = iter->second; if (msg_template->isBanned(trustedSource)) { - llwarns << "LLMessageSystem::callHandler: banned message " + LL_WARNS("Messaging") << "LLMessageSystem::callHandler: banned message " << name << " from " << (trustedSource ? "trusted " : "untrusted ") @@ -3131,7 +3127,7 @@ bool LLMessageSystem::generateDigestForWindowAndUUIDs(char* digest, const S32 wi std::string shared_secret = get_shared_secret(); if(shared_secret.empty()) { - llerrs << "Trying to generate complex digest on a machine without a shared secret!" << llendl; + LL_ERRS("Messaging") << "Trying to generate complex digest on a machine without a shared secret!" << llendl; } U32 now = time(NULL); @@ -3150,7 +3146,7 @@ bool LLMessageSystem::isMatchingDigestForWindowAndUUIDs(const char* digest, cons std::string shared_secret = get_shared_secret(); if(shared_secret.empty()) { - llerrs << "Trying to compare complex digests on a machine without a shared secret!" << llendl; + LL_ERRS("Messaging") << "Trying to compare complex digests on a machine without a shared secret!" << llendl; } char our_digest[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */ @@ -3197,7 +3193,7 @@ bool LLMessageSystem::generateDigestForWindow(char* digest, const S32 window) co std::string shared_secret = get_shared_secret(); if(shared_secret.empty()) { - llerrs << "Trying to generate simple digest on a machine without a shared secret!" << llendl; + LL_ERRS("Messaging") << "Trying to generate simple digest on a machine without a shared secret!" << llendl; } U32 now = time(NULL); @@ -3216,7 +3212,7 @@ bool LLMessageSystem::isMatchingDigestForWindow(const char* digest, S32 const wi std::string shared_secret = get_shared_secret(); if(shared_secret.empty()) { - llerrs << "Trying to compare simple digests on a machine without a shared secret!" << llendl; + LL_ERRS("Messaging") << "Trying to compare simple digests on a machine without a shared secret!" << llendl; } char our_digest[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */ @@ -3250,12 +3246,12 @@ void LLMessageSystem::sendCreateTrustedCircuit(const LLHost &host, const LLUUID char digest[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */ if (id1.isNull()) { - llwarns << "Can't send CreateTrustedCircuit to " << host << " because we don't have the local end point ID" << llendl; + LL_WARNS("Messaging") << "Can't send CreateTrustedCircuit to " << host << " because we don't have the local end point ID" << llendl; return; } if (id2.isNull()) { - llwarns << "Can't send CreateTrustedCircuit to " << host << " because we don't have the remote end point ID" << llendl; + LL_WARNS("Messaging") << "Can't send CreateTrustedCircuit to " << host << " because we don't have the remote end point ID" << llendl; return; } generateDigestForWindowAndUUIDs(digest, TRUST_TIME_WINDOW, id1, id2); @@ -3263,7 +3259,7 @@ void LLMessageSystem::sendCreateTrustedCircuit(const LLHost &host, const LLUUID nextBlockFast(_PREHASH_DataBlock); addUUIDFast(_PREHASH_EndPointID, id1); addBinaryDataFast(_PREHASH_Digest, digest, MD5HEX_STR_BYTES); - llinfos << "xmitting digest: " << digest << " Host: " << host << llendl; + LL_INFOS("Messaging") << "xmitting digest: " << digest << " Host: " << host << llendl; sendMessage(host); } @@ -3277,10 +3273,10 @@ void LLMessageSystem::reallySendDenyTrustedCircuit(const LLHost &host) LLCircuitData *cdp = mCircuitInfo.findCircuit(host); if (!cdp) { - llwarns << "Not sending DenyTrustedCircuit to host without a circuit." << llendl; + LL_WARNS("Messaging") << "Not sending DenyTrustedCircuit to host without a circuit." << llendl; return; } - llinfos << "Sending DenyTrustedCircuit to " << host << llendl; + LL_INFOS("Messaging") << "Sending DenyTrustedCircuit to " << host << llendl; newMessageFast(_PREHASH_DenyTrustedCircuit); nextBlockFast(_PREHASH_DataBlock); addUUIDFast(_PREHASH_EndPointID, cdp->getLocalEndPointID()); @@ -3301,7 +3297,7 @@ void LLMessageSystem::establishBidirectionalTrust(const LLHost &host, S64 frame_ std::string shared_secret = get_shared_secret(); if(shared_secret.empty()) { - llerrs << "Trying to establish bidirectional trust on a machine without a shared secret!" << llendl; + LL_ERRS("Messaging") << "Trying to establish bidirectional trust on a machine without a shared secret!" << llendl; } LLTimer timeout; @@ -3353,8 +3349,8 @@ void LLMessageSystem::establishBidirectionalTrust(const LLHost &host, S64 frame_ void LLMessageSystem::dumpPacketToLog() { - llwarns << "Packet Dump from:" << mPacketRing.getLastSender() << llendl; - llwarns << "Packet Size:" << mTrueReceiveSize << llendl; + LL_WARNS("Messaging") << "Packet Dump from:" << mPacketRing.getLastSender() << llendl; + LL_WARNS("Messaging") << "Packet Size:" << mTrueReceiveSize << llendl; char line_buffer[256]; /* Flawfinder: ignore */ S32 i; S32 cur_line_pos = 0; @@ -3369,13 +3365,13 @@ void LLMessageSystem::dumpPacketToLog() if (cur_line_pos >= 16) { cur_line_pos = 0; - llwarns << "PD:" << cur_line << "PD:" << line_buffer << llendl; + LL_WARNS("Messaging") << "PD:" << cur_line << "PD:" << line_buffer << llendl; cur_line++; } } if (cur_line_pos) { - llwarns << "PD:" << cur_line << "PD:" << line_buffer << llendl; + LL_WARNS("Messaging") << "PD:" << cur_line << "PD:" << line_buffer << llendl; } } @@ -3919,7 +3915,7 @@ void LLMessageSystem::getStringFast(const char *block, const char *var, { if(buffer_size <= 0) { - llwarns << "buffer_size <= 0" << llendl; + LL_WARNS("Messaging") << "buffer_size <= 0" << llendl; } mMessageReader->getString(block, var, buffer_size, s, blocknum); } diff --git a/indra/llmessage/net.cpp b/indra/llmessage/net.cpp index 50b34148d4..2807076ef6 100644 --- a/indra/llmessage/net.cpp +++ b/indra/llmessage/net.cpp @@ -185,7 +185,7 @@ S32 start_net(S32& socket_out, int& nPort) { S32 err = WSAGetLastError(); WSACleanup(); - llwarns << "Windows Sockets initialization failed, err " << err << llendl; + LL_WARNS("AppInit") << "Windows Sockets initialization failed, err " << err << LL_ENDL; return 1; } @@ -195,7 +195,7 @@ S32 start_net(S32& socket_out, int& nPort) { S32 err = WSAGetLastError(); WSACleanup(); - llwarns << "socket() failed, err " << err << llendl; + LL_WARNS("AppInit") << "socket() failed, err " << err << LL_ENDL; return 2; } @@ -205,7 +205,7 @@ S32 start_net(S32& socket_out, int& nPort) stLclAddr.sin_port = htons(nPort); S32 attempt_port = nPort; - llinfos << "attempting to connect on port " << attempt_port << llendl; + LL_DEBUGS("AppInit") << "attempting to connect on port " << attempt_port << LL_ENDL; nRet = bind(hSocket, (struct sockaddr*) &stLclAddr, sizeof(stLclAddr)); if (nRet == SOCKET_ERROR) @@ -219,7 +219,7 @@ S32 start_net(S32& socket_out, int& nPort) attempt_port++) { stLclAddr.sin_port = htons(attempt_port); - llinfos << "trying port " << attempt_port << llendl; + LL_DEBUGS("AppInit") << "trying port " << attempt_port << LL_ENDL; nRet = bind(hSocket, (struct sockaddr*) &stLclAddr, sizeof(stLclAddr)); if (!(nRet == SOCKET_ERROR && @@ -231,7 +231,7 @@ S32 start_net(S32& socket_out, int& nPort) if (nRet == SOCKET_ERROR) { - llwarns << "startNet() : Couldn't find available network port." << llendl; + LL_WARNS("AppInit") << "startNet() : Couldn't find available network port." << LL_ENDL; // Fail gracefully here in release return 3; } @@ -239,7 +239,7 @@ S32 start_net(S32& socket_out, int& nPort) else // Some other socket error { - llwarns << llformat("bind() port: %d failed, Err: %d\n", nPort, WSAGetLastError()) << llendl; + LL_WARNS("AppInit") << llformat("bind() port: %d failed, Err: %d\n", nPort, WSAGetLastError()) << LL_ENDL; // Fail gracefully in release. return 4; } @@ -250,7 +250,7 @@ S32 start_net(S32& socket_out, int& nPort) getsockname(hSocket, (SOCKADDR*) &socket_address, &socket_address_size); attempt_port = ntohs(socket_address.sin_port); - llinfos << "connected on port " << attempt_port << llendl; + LL_INFOS("AppInit") << "connected on port " << attempt_port << LL_ENDL; nPort = attempt_port; // Set socket to be non-blocking @@ -266,20 +266,20 @@ S32 start_net(S32& socket_out, int& nPort) nRet = setsockopt(hSocket, SOL_SOCKET, SO_RCVBUF, (char *)&rec_size, buff_size); if (nRet) { - llinfos << "Can't set receive buffer size!" << llendl; + LL_INFOS("AppInit") << "Can't set receive buffer size!" << LL_ENDL; } nRet = setsockopt(hSocket, SOL_SOCKET, SO_SNDBUF, (char *)&snd_size, buff_size); if (nRet) { - llinfos << "Can't set send buffer size!" << llendl; + LL_INFOS("AppInit") << "Can't set send buffer size!" << LL_ENDL; } getsockopt(hSocket, SOL_SOCKET, SO_RCVBUF, (char *)&rec_size, &buff_size); getsockopt(hSocket, SOL_SOCKET, SO_SNDBUF, (char *)&snd_size, &buff_size); - llinfos << "startNet - receive buffer size : " << rec_size << llendl; - llinfos << "startNet - send buffer size : " << snd_size << llendl; + LL_DEBUGS("AppInit") << "startNet - receive buffer size : " << rec_size << LL_ENDL; + LL_DEBUGS("AppInit") << "startNet - send buffer size : " << snd_size << LL_ENDL; // Setup a destination address char achMCAddr[MAXADDRSTR] = " "; /* Flawfinder: ignore */ diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 1113959999..3a408b5550 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -241,7 +241,7 @@ bool LLFontGL::loadFaceFallback(LLFontList *fontlistp, const LLString& fontname, font_path = sys_path + *token_iter; if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, TRUE)) { - llwarns << "Couldn't load font " << *token_iter << llendl; + LL_INFOS_ONCE("ViewerImages") << "Couldn't load font " << *token_iter << LL_ENDL; delete fontp; fontp = NULL; } @@ -268,7 +268,7 @@ bool LLFontGL::loadFace(LLFontGL *fontp, const LLString& fontname, const F32 poi font_path = sys_path + fontname; if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, FALSE)) { - llwarns << "Couldn't load font " << fontname << llendl; + LL_WARNS("ViewerImages") << "Couldn't load font " << fontname << LL_ENDL; return false; } } diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index b595845546..7bb79d4973 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -832,8 +832,14 @@ void LLFloater::setMinimized(BOOL minimize) for (S32 i = 0; i < 4; i++) { - if (mResizeBar[i]) mResizeBar[i]->setEnabled(FALSE); - if (mResizeHandle[i]) mResizeHandle[i]->setEnabled(FALSE); + if (mResizeBar[i] != NULL) + { + mResizeBar[i]->setEnabled(FALSE); + } + if (mResizeHandle[i] != NULL) + { + mResizeHandle[i]->setEnabled(FALSE); + } } mMinimized = TRUE; @@ -875,8 +881,14 @@ void LLFloater::setMinimized(BOOL minimize) for (S32 i = 0; i < 4; i++) { - if (mResizeBar[i]) mResizeBar[i]->setEnabled(isResizable()); - if (mResizeHandle[i]) mResizeHandle[i]->setEnabled(isResizable()); + if (mResizeBar[i] != NULL) + { + mResizeBar[i]->setEnabled(isResizable()); + } + if (mResizeHandle[i] != NULL) + { + mResizeHandle[i]->setEnabled(isResizable()); + } } mMinimized = FALSE; diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index ae35b656d6..3604d3f86f 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -492,21 +492,21 @@ bool LLDir::setCacheDir(const std::string &path) void LLDir::dumpCurrentDirectories() { - llinfos << "Current Directories:" << llendl; - - llinfos << " CurPath: " << getCurPath() << llendl; - llinfos << " AppName: " << getAppName() << llendl; - llinfos << " ExecutableFilename: " << getExecutableFilename() << llendl; - llinfos << " ExecutableDir: " << getExecutableDir() << llendl; - llinfos << " ExecutablePathAndName: " << getExecutablePathAndName() << llendl; - llinfos << " WorkingDir: " << getWorkingDir() << llendl; - llinfos << " AppRODataDir: " << getAppRODataDir() << llendl; - llinfos << " OSUserDir: " << getOSUserDir() << llendl; - llinfos << " OSUserAppDir: " << getOSUserAppDir() << llendl; - llinfos << " LindenUserDir: " << getLindenUserDir() << llendl; - llinfos << " TempDir: " << getTempDir() << llendl; - llinfos << " CAFile: " << getCAFile() << llendl; - llinfos << " SkinDir: " << getSkinDir() << llendl; + LL_DEBUGS2("AppInit","Directories") << "Current Directories:" << LL_ENDL; + + LL_DEBUGS2("AppInit","Directories") << " CurPath: " << getCurPath() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " AppName: " << getAppName() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " ExecutableFilename: " << getExecutableFilename() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " ExecutableDir: " << getExecutableDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " ExecutablePathAndName: " << getExecutablePathAndName() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " WorkingDir: " << getWorkingDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " AppRODataDir: " << getAppRODataDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " OSUserDir: " << getOSUserDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " OSUserAppDir: " << getOSUserAppDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " LindenUserDir: " << getLindenUserDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " TempDir: " << getTempDir() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " CAFile: " << getCAFile() << LL_ENDL; + LL_DEBUGS2("AppInit","Directories") << " SkinDir: " << getSkinDir() << LL_ENDL; } diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index 66d333ccaf..cb04dee834 100644 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp @@ -248,7 +248,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r mDataFilename = new char[strlen(data_filename) + 1]; /* Flawfinder: ignore */ if (mIndexFilename == NULL || mDataFilename == NULL) { - llerrs << "Memory Allocation Failure" << llendl; + LL_ERRS("VFS") << "Memory Allocation Failure" << LL_ENDL; return; } strcpy(mIndexFilename, index_filename); /* Flawfinder: ignore */ @@ -261,7 +261,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r if (mReadOnly) { - llwarns << "Can't find " << mDataFilename << " to open read-only VFS" << llendl; + LL_WARNS("VFS") << "Can't find " << mDataFilename << " to open read-only VFS" << LL_ENDL; mValid = VFSVALID_BAD_CANNOT_OPEN_READONLY; return; } @@ -274,18 +274,18 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r } else { - llwarns << "Can't open VFS data file " << mDataFilename << " attempting to use alternate" << llendl; + LL_WARNS("VFS") << "Can't open VFS data file " << mDataFilename << " attempting to use alternate" << LL_ENDL; char *temp_index = new char[strlen(mIndexFilename) + 10]; /* Flawfinder: ignore */ if (!temp_index) { - llerrs << "Out of the memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl; + LL_ERRS("VFS") << "Out of the memory in LLVFS::LLVFS()" << LL_ENDL; return; } char *temp_data = new char[strlen(mDataFilename) + 10]; /* Flawfinder: ignore */ if (!temp_data) { - llerrs << "Out of the memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl; + LL_ERRS("VFS") << "Out of the memory in LLVFS::LLVFS()" << LL_ENDL; return; } @@ -310,7 +310,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r if (! mDataFP) { - llwarns << "Couldn't open vfs data file after trying many alternates" << llendl; + LL_WARNS("VFS") << "Couldn't open vfs data file after trying many alternates" << LL_ENDL; mValid = VFSVALID_BAD_CANNOT_CREATE; delete[] temp_index; delete[] temp_data; @@ -338,7 +338,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r char* marker = new char[strlen(mDataFilename) + strlen(".open") + 1]; /* Flawfinder: ignore */ if (!marker ) { - llerrs << "Out of memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl; + LL_ERRS("VFS") << "Out of memory in LLVFS::LLVFS()" << LL_ENDL; return; } sprintf(marker, "%s.open", mDataFilename); /* Flawfinder: ignore */ @@ -348,7 +348,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r unlockAndClose(mDataFP); mDataFP = NULL; - llwarns << "VFS: File left open on last run, removing old VFS file " << mDataFilename << llendl; + LL_WARNS("VFS") << "VFS: File left open on last run, removing old VFS file " << mDataFilename << LL_ENDL; LLFile::remove(mIndexFilename); LLFile::remove(mDataFilename); LLFile::remove(marker); @@ -356,7 +356,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r mDataFP = openAndLock(mDataFilename, "w+b", FALSE); if (!mDataFP) { - llwarns << "Can't open VFS data file in crash recovery" << llendl; + LL_WARNS("VFS") << "Can't open VFS data file in crash recovery" << LL_ENDL; mValid = VFSVALID_BAD_CANNOT_CREATE; return; } @@ -414,9 +414,9 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r if (block->mLength && block->mSize > 0) { // this is corrupt, not empty - llwarns << "VFS corruption: " << block->mFileID << " (" << block->mFileType << ") at index " << block->mIndexLocation << " DS: " << data_size << llendl; - llwarns << "Length: " << block->mLength << "\tLocation: " << block->mLocation << "\tSize: " << block->mSize << llendl; - llwarns << "File has bad data - VFS removed" << llendl; + LL_WARNS("VFS") << "VFS corruption: " << block->mFileID << " (" << block->mFileType << ") at index " << block->mIndexLocation << " DS: " << data_size << LL_ENDL; + LL_WARNS("VFS") << "Length: " << block->mLength << "\tLocation: " << block->mLocation << "\tSize: " << block->mSize << LL_ENDL; + LL_WARNS("VFS") << "File has bad data - VFS removed" << LL_ENDL; delete[] buffer; delete block; @@ -481,13 +481,13 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r if (cur_file_block->mLocation == last_file_block->mLocation && cur_file_block->mLength == last_file_block->mLength) { - llwarns << "VFS: removing duplicate entry" + LL_WARNS("VFS") << "VFS: removing duplicate entry" << " at " << cur_file_block->mLocation << " length " << cur_file_block->mLength << " size " << cur_file_block->mSize << " ID " << cur_file_block->mFileID << " type " << cur_file_block->mFileType - << llendl; + << LL_ENDL; // Duplicate entries. Nuke them both for safety. mFileBlocks.erase(*cur_file_block); // remove ID/type entry @@ -528,12 +528,12 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r mDataFP = NULL; LLFile::remove( mDataFilename ); - llwarns << "VFS: overlapping entries" + LL_WARNS("VFS") << "VFS: overlapping entries" << " at " << cur_file_block->mLocation << " length " << cur_file_block->mLength << " ID " << cur_file_block->mFileID << " type " << cur_file_block->mFileType - << llendl; + << LL_ENDL; mValid = VFSVALID_BAD_CORRUPT; return; } @@ -563,7 +563,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r { if (mReadOnly) { - llwarns << "Can't find " << mIndexFilename << " to open read-only VFS" << llendl; + LL_WARNS("VFS") << "Can't find " << mIndexFilename << " to open read-only VFS" << LL_ENDL; mValid = VFSVALID_BAD_CANNOT_OPEN_READONLY; return; } @@ -572,7 +572,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r mIndexFP = openAndLock(mIndexFilename, "w+b", FALSE); if (!mIndexFP) { - llwarns << "Couldn't open an index file for the VFS, probably a sharing violation!" << llendl; + LL_WARNS("VFS") << "Couldn't open an index file for the VFS, probably a sharing violation!" << LL_ENDL; unlockAndClose( mDataFP ); mDataFP = NULL; @@ -593,7 +593,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r char* marker = new char[strlen(mDataFilename) + strlen(".open") + 1]; if (!marker) { - llerrs << "Out of memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl; + LL_ERRS("VFS") << "Out of memory in LLVFS::LLVFS()" << LL_ENDL; return; } sprintf(marker, "%s.open", mDataFilename); /* Flawfinder: ignore */ @@ -607,7 +607,8 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r marker = NULL; } - llinfos << "VFS: Using index file " << mIndexFilename << " and data file " << mDataFilename << llendl; + LL_WARNS("VFS") << "Using index file " << mIndexFilename << LL_ENDL; + LL_WARNS("VFS") << "Using data file " << mDataFilename << LL_ENDL; mValid = VFSVALID_OK; } @@ -616,7 +617,7 @@ LLVFS::~LLVFS() { if (mDataMutex->isLocked()) { - llerrs << "LLVFS destroyed with mutex locked" << llendl; + LL_ERRS("VFS") << "LLVFS destroyed with mutex locked" << LL_ENDL; } unlockAndClose(mIndexFP); @@ -642,7 +643,7 @@ LLVFS::~LLVFS() char* marker_file = new char[strlen(mDataFilename) + strlen(".open") + 1]; if (marker_file == NULL) { - llerrs << "Memory Allocation Failure" << llendl; + LL_ERRS("VFS") << "Memory Allocation Failure" << LL_ENDL; return; } sprintf(marker_file, "%s.open", mDataFilename); /* Flawfinder: ignore */ diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index be8416cc23..e3cbf6d9d2 100644 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -304,7 +304,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) IDxDiagContainer *driver_containerp = NULL; // CoCreate a IDxDiagProvider* - llinfos << "CoCreateInstance IID_IDxDiagProvider" << llendl; + LL_DEBUGS("AppInit") << "CoCreateInstance IID_IDxDiagProvider" << LL_ENDL; hr = CoCreateInstance(CLSID_DxDiagProvider, NULL, CLSCTX_INPROC_SERVER, @@ -313,7 +313,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) if (FAILED(hr)) { - llwarns << "No DXDiag provider found! DirectX 9 not installed!" << llendl; + LL_WARNS("AppInit") << "No DXDiag provider found! DirectX 9 not installed!" << LL_ENDL; gWriteDebug("No DXDiag provider found! DirectX 9 not installed!\n"); goto LCleanup; } @@ -331,14 +331,14 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) dx_diag_init_params.bAllowWHQLChecks = TRUE; dx_diag_init_params.pReserved = NULL; - llinfos << "dx_diag_providerp->Initialize" << llendl; + LL_DEBUGS("AppInit") << "dx_diag_providerp->Initialize" << LL_ENDL; hr = dx_diag_providerp->Initialize(&dx_diag_init_params); if(FAILED(hr)) { goto LCleanup; } - llinfos << "dx_diag_providerp->GetRootContainer" << llendl; + LL_DEBUGS("AppInit") << "dx_diag_providerp->GetRootContainer" << LL_ENDL; hr = dx_diag_providerp->GetRootContainer( &dx_diag_rootp ); if(FAILED(hr) || !dx_diag_rootp) { @@ -348,7 +348,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) HRESULT hr; // Get display driver information - llinfos << "dx_diag_rootp->GetChildContainer" << llendl; + LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer" << LL_ENDL; hr = dx_diag_rootp->GetChildContainer(L"DxDiag_DisplayDevices", &devices_containerp); if(FAILED(hr) || !devices_containerp) { @@ -356,7 +356,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) } // Get device 0 - llinfos << "devices_containerp->GetChildContainer" << llendl; + LL_DEBUGS("AppInit") << "devices_containerp->GetChildContainer" << LL_ENDL; hr = devices_containerp->GetChildContainer(L"0", &device_containerp); if(FAILED(hr) || !device_containerp) { @@ -373,10 +373,9 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) // Dump the string as an int into the structure char *stopstring; mVRAM = strtol(ram_str.c_str(), &stopstring, 10); - llinfos << "VRAM Detected: " << mVRAM << " DX9 string: " << ram_str << llendl; + LL_INFOS("AppInit") << "VRAM Detected: " << mVRAM << " DX9 string: " << ram_str << LL_ENDL; } - if (vram_only) { ok = TRUE; @@ -393,7 +392,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) // This call may take some time while dxdiag gathers the info. DWORD num_devices = 0; WCHAR wszContainer[256]; - llinfos << "dx_diag_rootp->GetChildContainer DxDiag_SystemDevices" << llendl; + LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer DxDiag_SystemDevices" << LL_ENDL; hr = dx_diag_rootp->GetChildContainer(L"DxDiag_SystemDevices", &system_device_containerp); if (FAILED(hr)) { @@ -406,7 +405,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) goto LCleanup; } - llinfos << "DX9 iterating over devices" << llendl; + LL_DEBUGS("AppInit") << "DX9 iterating over devices" << LL_ENDL; S32 device_num = 0; for (device_num = 0; device_num < (S32)num_devices; device_num++) { @@ -523,7 +522,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only) LCleanup: if (!ok) { - llwarns << "DX9 probe failed" << llendl; + LL_WARNS("AppInit") << "DX9 probe failed" << LL_ENDL; gWriteDebug("DX9 probe failed\n"); } diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index ba92e80402..4940e06f39 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -359,7 +359,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits if (mFullscreen && (mOldDisplayMode == NULL)) { - llinfos << "createContext: setting up fullscreen " << width << "x" << height << llendl; + LL_INFOS("Window") << "createContext: setting up fullscreen " << width << "x" << height << LL_ENDL; // NOTE: The refresh rate will be REPORTED AS 0 for many DVI and notebook displays. Plan accordingly. double refresh = getDictDouble (CGDisplayCurrentMode (mDisplay), kCGDisplayRefreshRate); @@ -380,18 +380,18 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits U32 closestWidth = 0; int i; - llinfos << "createContext: searching for a display mode, original aspect is " << mOriginalAspectRatio << llendl; + LL_DEBUGS("Window") << "createContext: searching for a display mode, original aspect is " << mOriginalAspectRatio << LL_ENDL; for(i=0; i < resolutionCount; i++) { F32 aspect = (F32)resolutionList[i].mWidth / (F32)resolutionList[i].mHeight; - llinfos << "createContext: width " << resolutionList[i].mWidth << " height " << resolutionList[i].mHeight << " aspect " << aspect << llendl; + LL_DEBUGS("Window") << "createContext: width " << resolutionList[i].mWidth << " height " << resolutionList[i].mHeight << " aspect " << aspect << LL_ENDL; if( (resolutionList[i].mHeight >= 700) && (resolutionList[i].mHeight <= 800) && (fabs(aspect - mOriginalAspectRatio) < fabs(closestAspect - mOriginalAspectRatio))) { - llinfos << " (new closest mode) " << llendl; + LL_DEBUGS("Window") << " (new closest mode) " << LL_ENDL; // This is the closest mode we've seen yet. closestWidth = resolutionList[i].mWidth; @@ -437,7 +437,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits if (refDisplayMode) { - llinfos << "createContext: switching display resolution" << llendl; + LL_DEBUGS("Window") << "createContext: switching display resolution" << LL_ENDL; mOldDisplayMode = CGDisplayCurrentMode (mDisplay); CGDisplaySwitchToMode (mDisplay, refDisplayMode); // CFRelease(refDisplayMode); @@ -452,11 +452,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits mFullscreenBits = CGDisplayBitsPerPixel(mDisplay); mFullscreenRefresh = llround(getDictDouble (CGDisplayCurrentMode (mDisplay), kCGDisplayRefreshRate)); - llinfos << "Running at " << mFullscreenWidth + LL_INFOS("Window") << "Running at " << mFullscreenWidth << "x" << mFullscreenHeight << "x" << mFullscreenBits << " @ " << mFullscreenRefresh - << llendl; + << LL_ENDL; } else { @@ -480,7 +480,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits //int displayHeight = CGDisplayPixelsHigh(mDisplay); //const int menuBarPlusTitleBar = 44; // Ugly magic number. - llinfos << "createContext: creating window" << llendl; + LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL; window_rect.left = (long) x; window_rect.right = (long) x + width; @@ -534,7 +534,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits err = NewTSMDocument(1, types, &mTSMDocument, 0); if (err != noErr) { - llwarns << "createContext: couldn't create a TSMDocument (" << err << ")" << llendl; + LL_WARNS("Window") << "createContext: couldn't create a TSMDocument (" << err << ")" << LL_ENDL; } if (mTSMDocument) { @@ -575,7 +575,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits AGL_NONE }; - llinfos << "createContext: creating fullscreen pixelformat" << llendl; + LL_DEBUGS("Window") << "createContext: creating fullscreen pixelformat" << LL_ENDL; GDHandle gdhDisplay = NULL; err = DMGetGDeviceByDisplayID ((DisplayIDType)mDisplay, &gdhDisplay, false); @@ -602,7 +602,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits AGL_NONE }; - llinfos << "createContext: creating windowed pixelformat" << llendl; + LL_DEBUGS("Window") << "createContext: creating windowed pixelformat" << LL_ENDL; mPixelFormat = aglChoosePixelFormat(NULL, 0, windowedAttrib); @@ -622,7 +622,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits if(mPixelFormat) { - llinfos << "createContext: creating GL context" << llendl; + LL_DEBUGS("Window") << "createContext: creating GL context" << LL_ENDL; mContext = aglCreateContext(mPixelFormat, NULL); } @@ -670,7 +670,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits { // We successfully captured the display. Use a fullscreen drawable - llinfos << "createContext: attaching fullscreen drawable" << llendl; + LL_DEBUGS("Window") << "createContext: attaching fullscreen drawable" << LL_ENDL; #if CAPTURE_ALL_DISPLAYS // Capture all displays (may want to do this for final build) @@ -688,7 +688,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits } else if(!mFullscreen && (mWindow != NULL)) { - llinfos << "createContext: attaching windowed drawable" << llendl; + LL_DEBUGS("Window") << "createContext: attaching windowed drawable" << LL_ENDL; // We created a window. Use it as the drawable. if(!aglSetDrawable(mContext, GetWindowPort (mWindow))) @@ -705,7 +705,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits if(mContext != NULL) { - llinfos << "createContext: setting current context" << llendl; + LL_DEBUGS("Window") << "createContext: setting current context" << LL_ENDL; if (!aglSetCurrentContext(mContext)) { @@ -759,11 +759,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits return FALSE; } - llinfos << "GL buffer: Color Bits " << S32(colorBits) + LL_INFOS("GLInit") << "GL buffer: Color Bits " << S32(colorBits) << " Alpha Bits " << S32(alphaBits) << " Depth Bits " << S32(depthBits) << " Stencil Bits" << S32(stencilBits) - << llendl; + << LL_ENDL; if (colorBits < 32) { @@ -798,12 +798,12 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits GLint frames_per_swap = 0; if (disable_vsync) { - llinfos << "Disabling vertical sync" << llendl; + LL_DEBUGS("GLInit") << "Disabling vertical sync" << LL_ENDL; frames_per_swap = 0; } else { - llinfos << "Keeping vertical sync" << llendl; + LL_DEBUGS("GLinit") << "Keeping vertical sync" << LL_ENDL; frames_per_swap = 1; } aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap); @@ -818,11 +818,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits if (cgl_err != kCGLNoError ) { - llinfos << "Multi-threaded OpenGL not available." << llendl; + LL_DEBUGS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL; } else { - llinfos << "Multi-threaded OpenGL enabled." << llendl; + LL_DEBUGS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL; } } @@ -869,11 +869,11 @@ BOOL LLWindowMacOSX::switchContext(BOOL fullscreen, const LLCoordScreen &size, B mFullscreenBits = CGDisplayBitsPerPixel(mDisplay); mFullscreenRefresh = llround(getDictDouble (CGDisplayCurrentMode (mDisplay), kCGDisplayRefreshRate)); - llinfos << "Switched resolution to " << mFullscreenWidth + LL_INFOS("Window") << "Switched resolution to " << mFullscreenWidth << "x" << mFullscreenHeight << "x" << mFullscreenBits << " @ " << mFullscreenRefresh - << llendl; + << LL_ENDL; // Update the GL context to the new screen size if (!aglUpdateContext(mContext)) @@ -943,7 +943,7 @@ void LLWindowMacOSX::destroyContext() // Unhook the GL context from any drawable it may have if(mContext != NULL) { - llinfos << "destroyContext: unhooking drawable " << llendl; + LL_DEBUGS("Window") << "destroyContext: unhooking drawable " << LL_ENDL; aglSetCurrentContext (NULL); aglSetDrawable(mContext, NULL); @@ -952,7 +952,7 @@ void LLWindowMacOSX::destroyContext() // Make sure the display resolution gets restored if(mOldDisplayMode != NULL) { - llinfos << "destroyContext: restoring display resolution " << llendl; + LL_DEBUGS("Window") << "destroyContext: restoring display resolution " << LL_ENDL; CGDisplaySwitchToMode (mDisplay, mOldDisplayMode); @@ -978,7 +978,7 @@ void LLWindowMacOSX::destroyContext() // Clean up the pixel format if(mPixelFormat != NULL) { - llinfos << "destroyContext: destroying pixel format " << llendl; + LL_DEBUGS("Window") << "destroyContext: destroying pixel format " << LL_ENDL; aglDestroyPixelFormat(mPixelFormat); mPixelFormat = NULL; } @@ -986,14 +986,14 @@ void LLWindowMacOSX::destroyContext() // Remove any Carbon Event handlers we installed if(mGlobalHandlerRef != NULL) { - llinfos << "destroyContext: removing global event handler" << llendl; + LL_DEBUGS("Window") << "destroyContext: removing global event handler" << LL_ENDL; RemoveEventHandler(mGlobalHandlerRef); mGlobalHandlerRef = NULL; } if(mWindowHandlerRef != NULL) { - llinfos << "destroyContext: removing window event handler" << llendl; + LL_DEBUGS("Window") << "destroyContext: removing window event handler" << LL_ENDL; RemoveEventHandler(mWindowHandlerRef); mWindowHandlerRef = NULL; } @@ -1001,7 +1001,7 @@ void LLWindowMacOSX::destroyContext() // Cleanup any TSM document we created. if(mTSMDocument != NULL) { - llinfos << "destroyContext: deleting TSM document" << llendl; + LL_DEBUGS("Window") << "destroyContext: deleting TSM document" << LL_ENDL; DeactivateTSMDocument(mTSMDocument); DeleteTSMDocument(mTSMDocument); mTSMDocument = NULL; @@ -1010,7 +1010,7 @@ void LLWindowMacOSX::destroyContext() // Close the window if(mWindow != NULL) { - llinfos << "destroyContext: disposing window" << llendl; + LL_DEBUGS("Window") << "destroyContext: disposing window" << LL_ENDL; DisposeWindow(mWindow); mWindow = NULL; } @@ -1018,7 +1018,7 @@ void LLWindowMacOSX::destroyContext() // Clean up the GL context if(mContext != NULL) { - llinfos << "destroyContext: destroying GL context" << llendl; + LL_DEBUGS("Window") << "destroyContext: destroying GL context" << LL_ENDL; aglDestroyContext(mContext); mContext = NULL; } diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 06b4fbde59..841cac941a 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -84,7 +84,7 @@ LLW32MsgCallback gAsyncMsgCallback = NULL; void show_window_creation_error(const char* title) { - llwarns << title << llendl; + LL_WARNS("Window") << title << LL_ENDL; } //static @@ -534,7 +534,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, if (closest_refresh == 0) { - llwarns << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << llendl; + LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; success = FALSE; } @@ -557,11 +557,11 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, mFullscreenBits = dev_mode.dmBitsPerPel; mFullscreenRefresh = dev_mode.dmDisplayFrequency; - llinfos << "Running at " << dev_mode.dmPelsWidth + LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth << "x" << dev_mode.dmPelsHeight << "x" << dev_mode.dmBitsPerPel << " @ " << dev_mode.dmDisplayFrequency - << llendl; + << LL_ENDL; } else { @@ -576,7 +576,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, OSMessageBox(error, "Error", OSMB_OK); } } - + // TODO: add this after resolving _WIN32_WINNT issue // if (!fullscreen) // { @@ -588,7 +588,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, // TrackMouseEvent( &track_mouse_event ); // } - + //----------------------------------------------------------------------- // Create GL drawing context //----------------------------------------------------------------------- @@ -657,7 +657,7 @@ void LLWindowWin32::restore() // Usually called from LLWindowManager::destroyWindow() void LLWindowWin32::close() { - llinfos << "Closing LLWindowWin32" << llendl; + LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL; // Is window is already closed? if (!mWindowHandle) { @@ -675,20 +675,20 @@ void LLWindowWin32::close() } // Clean up remaining GL state - llinfos << "Shutting down GL" << llendl; + LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL; gGLManager.shutdownGL(); - llinfos << "Releasing Context" << llendl; + LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL; if (mhRC) { if (!wglMakeCurrent(NULL, NULL)) { - llwarns << "Release of DC and RC failed" << llendl; + LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; } if (!wglDeleteContext(mhRC)) { - llwarns << "Release of rendering context failed" << llendl; + LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; } mhRC = NULL; @@ -699,11 +699,11 @@ void LLWindowWin32::close() if (mhDC && !ReleaseDC(mWindowHandle, mhDC)) { - llwarns << "Release of ghDC failed" << llendl; + LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL; mhDC = NULL; } - llinfos << "Destroying Window" << llendl; + LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL; // Don't process events in our mainWindowProc any longer. SetWindowLong(mWindowHandle, GWL_USERDATA, NULL); @@ -866,12 +866,12 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO { if (!wglMakeCurrent(NULL, NULL)) { - llwarns << "Release of DC and RC failed" << llendl; + LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL; } if (!wglDeleteContext(mhRC)) { - llwarns << "Release of rendering context failed" << llendl; + LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL; } mhRC = NULL; @@ -905,7 +905,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO if (closest_refresh == 0) { - llwarns << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << llendl; + LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL; return FALSE; } @@ -927,11 +927,11 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO mFullscreenBits = dev_mode.dmBitsPerPel; mFullscreenRefresh = dev_mode.dmDisplayFrequency; - llinfos << "Running at " << dev_mode.dmPelsWidth + LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth << "x" << dev_mode.dmPelsHeight << "x" << dev_mode.dmBitsPerPel << " @ " << dev_mode.dmDisplayFrequency - << llendl; + << LL_ENDL; window_rect.left = (long) 0; window_rect.right = (long) width; // Windows GDI rects don't include rightmost pixel @@ -952,8 +952,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO mFullscreenBits = -1; mFullscreenRefresh = -1; - llinfos << "Unable to run fullscreen at " << width << "x" << height << llendl; - llinfos << "Running in window." << llendl; + LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL; return FALSE; } } @@ -1146,7 +1145,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO { if (end_attrib > 0) { - llinfos << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << llendl; + LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL; attrib_list[end_attrib] = 0; BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); @@ -1160,7 +1159,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO if (!num_formats) { - llinfos << "No 32 bit z-buffer, trying 24 bits instead" << llendl; + LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL; // Try 24-bit format attrib_list[1] = 24; BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); @@ -1173,7 +1172,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO if (!num_formats) { - llwarns << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << llendl; + LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL; attrib_list[1] = 16; BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats); if (!result || !num_formats) @@ -1185,7 +1184,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO } } - llinfos << "Choosing pixel formats: " << num_formats << " pixel formats returned" << llendl; + LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL; } pixel_format = pixel_formats[0]; @@ -1241,26 +1240,26 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO { case WGL_SWAP_EXCHANGE_ARB: mSwapMethod = SWAP_METHOD_EXCHANGE; - llinfos << "Swap Method: Exchange" << llendl; + LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL; break; case WGL_SWAP_COPY_ARB: mSwapMethod = SWAP_METHOD_COPY; - llinfos << "Swap Method: Copy" << llendl; + LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL; break; case WGL_SWAP_UNDEFINED_ARB: mSwapMethod = SWAP_METHOD_UNDEFINED; - llinfos << "Swap Method: Undefined" << llendl; + LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL; break; default: mSwapMethod = SWAP_METHOD_UNDEFINED; - llinfos << "Swap Method: Unknown" << llendl; + LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL; break; } } } else { - llwarns << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << llendl; + LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL; } // Verify what pixel format we actually received. @@ -1272,10 +1271,10 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO return FALSE; } - llinfos << "GL buffer: Color Bits " << S32(pfd.cColorBits) + LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits) << " Alpha Bits " << S32(pfd.cAlphaBits) << " Depth Bits " << S32(pfd.cDepthBits) - << llendl; + << LL_ENDL; // make sure we have 32 bits per pixel if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32) @@ -1338,12 +1337,12 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO // Disable vertical sync for swap if (disable_vsync && wglSwapIntervalEXT) { - llinfos << "Disabling vertical sync" << llendl; + LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL; wglSwapIntervalEXT(0); } else { - llinfos << "Keeping vertical sync" << llendl; + LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL; } SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); @@ -1701,11 +1700,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ if (gDebugWindowProc) { - llinfos << "WINDOWPROC ActivateApp " + LL_INFOS("Window") << "WINDOWPROC ActivateApp " << " activating " << S32(activating) << " minimized " << S32(minimized) << " fullscreen " << S32(window_imp->mFullscreen) - << llendl; + << LL_ENDL; } if (window_imp->mFullscreen) @@ -1746,10 +1745,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ // properly when we run fullscreen. if (gDebugWindowProc) { - llinfos << "WINDOWPROC Activate " + LL_INFOS("Window") << "WINDOWPROC Activate " << " activating " << S32(activating) << " minimized " << S32(minimized) - << llendl; + << LL_ENDL; } // Don't handle this. @@ -1805,9 +1804,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ { if (gDebugWindowProc) { - llinfos << "Debug WindowProc WM_KEYDOWN " + LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN " << " key " << S32(w_param) - << llendl; + << LL_ENDL; } if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke) { @@ -1824,9 +1823,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ if (gDebugWindowProc) { - llinfos << "Debug WindowProc WM_KEYUP " + LL_INFOS("Window") << "Debug WindowProc WM_KEYUP " << " key " << S32(w_param) - << llendl; + << LL_ENDL; } if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke) { @@ -1909,13 +1908,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ // it is worth trying. The good old WM_CHAR works just fine even for supplementary // characters. We just need to take care of surrogate pairs sent as two WM_CHAR's // by ourselves. It is not that tough. -- Alissa Sabre @ SL - // - // llinfos << "WM_CHAR: " << w_param << llendl; if (gDebugWindowProc) { - llinfos << "Debug WindowProc WM_CHAR " + LL_INFOS("Window") << "Debug WindowProc WM_CHAR " << " key " << S32(w_param) - << llendl; + << LL_ENDL; } // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE, // we *did* processed the event, so I believe we should not pass it to DefWindowProc... @@ -1985,7 +1982,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER); //if (gDebugClicks) //{ - // llinfos << "WndProc left button up" << llendl; + // LL_INFOS("Window") << "WndProc left button up" << LL_ENDL; //} // Because we move the cursor position in the app, we need to query // to find out where the cursor at the time the event is handled. @@ -2181,12 +2178,12 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ BOOL restored = ( w_param == SIZE_RESTORED ); BOOL minimized = ( w_param == SIZE_MINIMIZED ); - llinfos << "WINDOWPROC Size " + LL_INFOS("Window") << "WINDOWPROC Size " << width << "x" << height << " max " << S32(maximized) << " min " << S32(minimized) << " rest " << S32(restored) - << llendl; + << LL_ENDL; } // There's an odd behavior with WM_SIZE that I would call a bug. If @@ -2232,7 +2229,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ case WM_SETFOCUS: if (gDebugWindowProc) { - llinfos << "WINDOWPROC SetFocus" << llendl; + LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL; } window_imp->mCallbacks->handleFocus(window_imp); return 0; @@ -2240,7 +2237,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ case WM_KILLFOCUS: if (gDebugWindowProc) { - llinfos << "WINDOWPROC KillFocus" << llendl; + LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL; } window_imp->mCallbacks->handleFocusLost(window_imp); return 0; @@ -2596,7 +2593,7 @@ BOOL LLWindowWin32::setGamma(const F32 gamma) { mCurrentGamma = gamma; - llinfos << "Setting gamma to " << gamma << llendl; + LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL; for ( int i = 0; i < 256; ++i ) { @@ -2737,8 +2734,8 @@ BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 re if (!success) { - llwarns << "setDisplayResolution failed, " - << width << "x" << height << "x" << bits << " @ " << refresh << llendl; + LL_WARNS("Window") << "setDisplayResolution failed, " + << width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL; } return success; @@ -2760,7 +2757,7 @@ BOOL LLWindowWin32::setFullscreenResolution() // protected BOOL LLWindowWin32::resetDisplayResolution() { - llinfos << "resetDisplayResolution START" << llendl; + LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL; LONG cds_result = ChangeDisplaySettings(NULL, 0); @@ -2768,10 +2765,10 @@ BOOL LLWindowWin32::resetDisplayResolution() if (!success) { - llwarns << "resetDisplayResolution failed" << llendl; + LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL; } - llinfos << "resetDisplayResolution END" << llendl; + LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL; return success; } @@ -2908,11 +2905,11 @@ void spawn_web_browser(const char* escaped_url ) if (!found) { - llwarns << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << llendl; + LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL; return; } - llinfos << "Opening URL " << escaped_url << llendl; + LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL; // replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work // reliablly on Vista. @@ -2952,7 +2949,7 @@ void spawn_web_browser(const char* escaped_url ) if (browser_open_wstring.length() < 2) { - llwarns << "Invalid browser executable in registry " << browser_open_wstring << llendl; + LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL; return; } @@ -2972,8 +2969,8 @@ void spawn_web_browser(const char* escaped_url ) browser_executable = browser_open_wstring.substr(0, space_pos); } - llinfos << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << llendl; - llinfos << "Browser executable: " << wstring_to_utf8str(browser_executable) << llendl; + LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL; + LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL; // Convert URL to wide string for Windows API // Assume URL is UTF8, as can come from scripts @@ -2995,11 +2992,11 @@ void spawn_web_browser(const char* escaped_url ) SW_SHOWNORMAL); if (retval > 32) { - llinfos << "load_url success with " << retval << llendl; + LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL; } else { - llinfos << "load_url failure with " << retval << llendl; + LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL; } */ } @@ -3541,7 +3538,7 @@ BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result) if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control)) { - llwarns << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << llendl; + LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL; return FALSE; } fillCharPosition(caret_coord, preedit_bounds, text_control, char_position); diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 2c4fb3bccc..0429e30db6 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -50,9 +50,9 @@ #include "llsdserialize.h" #if LL_RELEASE_FOR_DOWNLOAD -#define CONTROL_ERRS llwarns +#define CONTROL_ERRS LL_WARNS("ControlErrors") #else -#define CONTROL_ERRS llerrs +#define CONTROL_ERRS LL_ERRS("ControlErrors") #endif //this defines the current version of the settings file diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 3e6fa21cc6..ec12794bc5 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -1,335 +1,335 @@ -<?xml version="1.0"?> -<llsd> - <map> - <key>help</key> - <map> - <key>desc</key> - <string>display this help message</string> - - <key>short</key> - <string>h</string> - </map> - - <key>port</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>UserConnectionPort</string> - </map> - - <key>drop</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>PacketDropPercentage</string> - </map> - - <key>inbw</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>InBandwidth</string> - </map> - - <key>outbw</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>OutBandwidth</string> - </map> - - <key>grid</key> - <map> - <key>desc</key> - <string>Specify the name of the grid, local, or an IP address to connect to.</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>GridChoice</string> - </map> - - <key>loginuri</key> - <map> - <key>desc</key> - <string>login server and CGI script to use</string> - <key>count</key> - <integer>1</integer> - <key>compose</key> - <boolean>true</boolean> - <key>map-to</key> - <string>LoginURI</string> - </map> - - <key>helperuri</key> - <map> - <key>desc</key> - <string>helper web CGI prefix to use</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>HelperURI</string> - </map> - - <key>debugviews</key> - <map> - <key>map-to</key> - <string>DebugViews</string> - </map> - - <key>skin</key> - <map> - <key>desc</key> - <string>ui/branding skin folder to use</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>SkinFolder</string> - </map> - - <key>autologin</key> - <map> - <key>desc</key> - <string>log in as last saved user</string> - <key>map-to</key> - <string>AutoLogin</string> - </map> - - <key>quitafter</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>QuitAfterSeconds</string> - </map> - - <key>rotate</key> - <map> - <key>map-to</key> - <string>RotateRight</string> - </map> - - <key>noaudio</key> - <map> - <key>map-to</key> - <string>NoAudio</string> - </map> - - <key>nosound</key> - <map> - <key>map-to</key> - <string>NoAudio</string> - </map> - - <key>noprobe</key> - <map> - <key>map-to</key> - <string>NoHardwareProbe</string> - </map> - - <key>noquicktime</key> - <map> - <key>map-to</key> - <string>NoQuickTime</string> - </map> - - <key>nopreload</key> - <map> - <key>map-to</key> - <string>NoPreload</string> - </map> - - <key>purge</key> - <map> - <key>desc</key> - <string>Delete files in the cache.</string> - <key>map-to</key> - <string>PurgeCacheOnNextStartup</string> - </map> - - <key>noinvlib</key> - <map> - <key>desc</key> - <string>Do not request the inventory library.</string> - <key>map-to</key> - <string>NoInventoryLibrary</string> - </map> - - <key>logfile</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>UserLogFile</string> - </map> - - <key>setdefault</key> - <map> - <key>desc</key> - <string> specify the value of a particular - configuration variable which can be - overridden by settings.xml - </string> - <key>count</key> - <integer>2</integer> - <!-- Special case. Mapped to settings procedurally. --> - </map> - - <key>set</key> - <map> - <key>desc</key> - <string> specify the value of a particular - configuration variable that - overrides all other settings - </string> - <key>count</key> - <integer>2</integer> - <!-- Special case. Mapped to settings procedurally. --> - </map> - - <key>settings</key> - <map> - <key>desc</key> - <string>Specify the filename of a configuration file.</string> - <key>count</key> - <integer>1</integer> - <!-- Special case. Mapped to settings procedurally. --> - </map> - - <key>login</key> - <map> - <key>desc</key> - <string>3 tokens: first, last and password</string> - <key>count</key> - <integer>3</integer> - <key>map-to</key> - <string>UserLoginInfo</string> - </map> - - <key>god</key> - <map> - <key>desc</key> - <string>Log in a god if you have god access.</string> - <key>map-to</key> - <string>ConnectAsGod</string> - </map> - - <key>console</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>ShowConsoleWindow</string> - </map> - - <key>safe</key> - <map> - <key>desc</key> - <string>Reset preferences, run in safe mode.</string> - <key>map-to</key> - <string>SafeMode</string> - </map> - - <key>multiple</key> - <map> - <key>desc</key> - <string>Allow multple viewers.</string> - <key>map-to</key> - <string>AllowMultipleViewers</string> - </map> - - <key>novoice</key> - <map> - <key>desc</key> - <string>Disable voice.</string> - <key>map-to</key> - <string>CmdLineDisableVoice</string> - </map> - - <key>url</key> - <map> - <key>desc</key> - <string>Startup location</string> - <key>count</key> - <integer>1</integer> - <key>last_option</key> - <boolean>true</boolean> - <!-- Special case. Not mapped to a setting. --> - </map> - - <key>slurl</key> - <map> - <key>desc</key> - <string>Startup SLurl</string> - <key>count</key> - <integer>1</integer> - <key>positional</key> - <boolean>true</boolean> - <key>last_option</key> - <boolean>true</boolean> - <!-- Special case. Not mapped to a setting. --> - </map> - - <key>ignorepixeldepth</key> - <map> - <key>desc</key> - <string>Ignore pixel depth settings.</string> - <key>map-to</key> - <string>IgnorePixelDepth</string> - </map> - - <key>cooperative</key> - <map> - <key>desc</key> - <string>Yield some idle time to local host.</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>YieldTime</string> - </map> - - <key>no-verify-ssl-cert</key> - <map> - <key>map-to</key> - <string>NoVerifySSLCert</string> - </map> - - <key>channel</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>VersionChannelName</string> - </map> - - <key>loginpage</key> - <map> - <key>desc</key> - <string>Login authentication page to use.</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>LoginPage</string> - </map> - - <key>qa</key> - <map> - <key>desc</key> - <string>Activated debugging menu in Advanced Settings.</string> - <key>map-to</key> - <string>QAMode</string> - </map> - - <key>crashonstartup</key> - <map> - <key>desc</key> - <string>Crashes on startup. For QA use.</string> - <key>map-to</key> - <string>CrashOnStartup</string> - </map> - - </map> -</llsd> +<?xml version="1.0"?>
+<llsd>
+ <map>
+ <key>help</key>
+ <map>
+ <key>desc</key>
+ <string>display this help message</string>
+
+ <key>short</key>
+ <string>h</string>
+ </map>
+
+ <key>port</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>UserConnectionPort</string>
+ </map>
+
+ <key>drop</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>PacketDropPercentage</string>
+ </map>
+
+ <key>inbw</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>InBandwidth</string>
+ </map>
+
+ <key>outbw</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>OutBandwidth</string>
+ </map>
+
+ <key>grid</key>
+ <map>
+ <key>desc</key>
+ <string>Specify the name of the grid, local, or an IP address to connect to.</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>GridChoice</string>
+ </map>
+
+ <key>loginuri</key>
+ <map>
+ <key>desc</key>
+ <string>login server and CGI script to use</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>compose</key>
+ <boolean>true</boolean>
+ <key>map-to</key>
+ <string>LoginURI</string>
+ </map>
+
+ <key>helperuri</key>
+ <map>
+ <key>desc</key>
+ <string>helper web CGI prefix to use</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>HelperURI</string>
+ </map>
+
+ <key>debugviews</key>
+ <map>
+ <key>map-to</key>
+ <string>DebugViews</string>
+ </map>
+
+ <key>skin</key>
+ <map>
+ <key>desc</key>
+ <string>ui/branding skin folder to use</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>SkinFolder</string>
+ </map>
+
+ <key>autologin</key>
+ <map>
+ <key>desc</key>
+ <string>log in as last saved user</string>
+ <key>map-to</key>
+ <string>AutoLogin</string>
+ </map>
+
+ <key>quitafter</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>QuitAfterSeconds</string>
+ </map>
+
+ <key>rotate</key>
+ <map>
+ <key>map-to</key>
+ <string>RotateRight</string>
+ </map>
+
+ <key>noaudio</key>
+ <map>
+ <key>map-to</key>
+ <string>NoAudio</string>
+ </map>
+
+ <key>nosound</key>
+ <map>
+ <key>map-to</key>
+ <string>NoAudio</string>
+ </map>
+
+ <key>noprobe</key>
+ <map>
+ <key>map-to</key>
+ <string>NoHardwareProbe</string>
+ </map>
+
+ <key>noquicktime</key>
+ <map>
+ <key>map-to</key>
+ <string>NoQuickTime</string>
+ </map>
+
+ <key>nopreload</key>
+ <map>
+ <key>map-to</key>
+ <string>NoPreload</string>
+ </map>
+
+ <key>purge</key>
+ <map>
+ <key>desc</key>
+ <string>Delete files in the cache.</string>
+ <key>map-to</key>
+ <string>PurgeCacheOnNextStartup</string>
+ </map>
+
+ <key>noinvlib</key>
+ <map>
+ <key>desc</key>
+ <string>Do not request the inventory library.</string>
+ <key>map-to</key>
+ <string>NoInventoryLibrary</string>
+ </map>
+
+ <key>logfile</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>UserLogFile</string>
+ </map>
+
+ <key>setdefault</key>
+ <map>
+ <key>desc</key>
+ <string> specify the value of a particular
+ configuration variable which can be
+ overridden by settings.xml
+ </string>
+ <key>count</key>
+ <integer>2</integer>
+ <!-- Special case. Mapped to settings procedurally. -->
+ </map>
+
+ <key>set</key>
+ <map>
+ <key>desc</key>
+ <string> specify the value of a particular
+ configuration variable that
+ overrides all other settings
+ </string>
+ <key>count</key>
+ <integer>2</integer>
+ <!-- Special case. Mapped to settings procedurally. -->
+ </map>
+
+ <key>settings</key>
+ <map>
+ <key>desc</key>
+ <string>Specify the filename of a configuration file.</string>
+ <key>count</key>
+ <integer>1</integer>
+ <!-- Special case. Mapped to settings procedurally. -->
+ </map>
+
+ <key>login</key>
+ <map>
+ <key>desc</key>
+ <string>3 tokens: first, last and password</string>
+ <key>count</key>
+ <integer>3</integer>
+ <key>map-to</key>
+ <string>UserLoginInfo</string>
+ </map>
+
+ <key>god</key>
+ <map>
+ <key>desc</key>
+ <string>Log in a god if you have god access.</string>
+ <key>map-to</key>
+ <string>ConnectAsGod</string>
+ </map>
+
+ <key>console</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>ShowConsoleWindow</string>
+ </map>
+
+ <key>safe</key>
+ <map>
+ <key>desc</key>
+ <string>Reset preferences, run in safe mode.</string>
+ <key>map-to</key>
+ <string>SafeMode</string>
+ </map>
+
+ <key>multiple</key>
+ <map>
+ <key>desc</key>
+ <string>Allow multple viewers.</string>
+ <key>map-to</key>
+ <string>AllowMultipleViewers</string>
+ </map>
+
+ <key>novoice</key>
+ <map>
+ <key>desc</key>
+ <string>Disable voice.</string>
+ <key>map-to</key>
+ <string>CmdLineDisableVoice</string>
+ </map>
+
+ <key>url</key>
+ <map>
+ <key>desc</key>
+ <string>Startup location</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>last_option</key>
+ <boolean>true</boolean>
+ <!-- Special case. Not mapped to a setting. -->
+ </map>
+
+ <key>slurl</key>
+ <map>
+ <key>desc</key>
+ <string>Startup SLurl</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>positional</key>
+ <boolean>true</boolean>
+ <key>last_option</key>
+ <boolean>true</boolean>
+ <!-- Special case. Not mapped to a setting. -->
+ </map>
+
+ <key>ignorepixeldepth</key>
+ <map>
+ <key>desc</key>
+ <string>Ignore pixel depth settings.</string>
+ <key>map-to</key>
+ <string>IgnorePixelDepth</string>
+ </map>
+
+ <key>cooperative</key>
+ <map>
+ <key>desc</key>
+ <string>Yield some idle time to local host.</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>YieldTime</string>
+ </map>
+
+ <key>no-verify-ssl-cert</key>
+ <map>
+ <key>map-to</key>
+ <string>NoVerifySSLCert</string>
+ </map>
+
+ <key>channel</key>
+ <map>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>VersionChannelName</string>
+ </map>
+
+ <key>loginpage</key>
+ <map>
+ <key>desc</key>
+ <string>Login authentication page to use.</string>
+ <key>count</key>
+ <integer>1</integer>
+ <key>map-to</key>
+ <string>LoginPage</string>
+ </map>
+
+ <key>qa</key>
+ <map>
+ <key>desc</key>
+ <string>Activated debugging menu in Advanced Settings.</string>
+ <key>map-to</key>
+ <string>QAMode</string>
+ </map>
+
+ <key>crashonstartup</key>
+ <map>
+ <key>desc</key>
+ <string>Crashes on startup. For QA use.</string>
+ <key>map-to</key>
+ <string>CrashOnStartup</string>
+ </map>
+
+ </map>
+</llsd>
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml new file mode 100644 index 0000000000..d7bb64ce8a --- /dev/null +++ b/indra/newview/app_settings/logcontrol.xml @@ -0,0 +1,47 @@ +<llsd> + <map> + <!-- default-level can be ALL, DEBUG, INFO, WARN, ERROR, or NONE --> + <key>default-level</key> <string>INFO</string> + <key>print-location</key> <boolean>false</boolean> + <key>settings</key> + <array> + <!-- sample entry for changing settings on specific items --> + <map> + <key>level</key><string>INFO</string> + <key>functions</key> + <array> + </array> + <key>classes</key> + <array> + </array> + <key>files</key> + <array> + </array> + <key>tags</key> + <array> + <string>AppInit</string> + <string>SystemInfo</string> + <string>TextureCache</string> + <string>AppCache</string> + <string>Window</string> + <string>RenderInit</string> + </array> + </map> + <map> + <key>level</key><string>DEBUG</string> + <key>functions</key> + <array> + </array> + <key>classes</key> + <array> + </array> + <key>files</key> + <array> + </array> + <key>tags</key> + <array> + </array> + </map> + </array> + </map> +</llsd> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2d391c4416..d895d7e991 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4072,6 +4072,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>MainloopTimeoutDefault</key> + <map> + <key>Comment</key> + <string>Timeout duration for mainloop lock detection, in seconds.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>10.0</real> + </map> <key>MapOverlayIndex</key> <map> <key>Comment</key> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index b8adfe5477..b1b59a71f8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -122,6 +122,7 @@ #include "llhudeffecttrail.h" #include "llvectorperfoptions.h" #include "llurlsimstring.h" +#include "llwatchdog.h" // Included so that constants/settings might be initialized // in save_settings_to_globals() @@ -593,10 +594,16 @@ LLAppViewer::LLAppViewer() : } sInstance = this; + + // Initialize the mainloop timeout. + mMainloopTimeout = new LLWatchdogTimeout(); } LLAppViewer::~LLAppViewer() { + // Initialize the mainloop timeout. + delete mMainloopTimeout; + // If we got to this destructor somehow, the app didn't hang. removeMarkerFile(); } @@ -650,7 +657,7 @@ bool LLAppViewer::init() // // Various introspection concerning the libs we're using. // - llinfos << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << llendl; + LL_DEBUGS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL; // Get the single value from the crash settings file, if it exists std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); @@ -693,15 +700,15 @@ bool LLAppViewer::init() // Load art UUID information, don't require these strings to be declared in code. LLString colors_base_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "colors_base.xml"); - llinfos << "Loading base colors from " << colors_base_filename << llendl; + LL_DEBUGS("InitInfo") << "Loading base colors from " << colors_base_filename << LL_ENDL; gColors.loadFromFileLegacy(colors_base_filename.c_str(), FALSE, TYPE_COL4U); // Load overrides from user colors file LLString user_colors_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "colors.xml"); - llinfos << "Loading user colors from " << user_colors_filename << llendl; + LL_DEBUGS("InitInfo") << "Loading user colors from " << user_colors_filename << LL_ENDL; if (gColors.loadFromFileLegacy(user_colors_filename.c_str(), FALSE, TYPE_COL4U) == 0) { - llinfos << "Cannot load user colors from " << user_colors_filename << llendl; + LL_DEBUGS("InitInfo") << "Cannot load user colors from " << user_colors_filename << LL_ENDL; } // Widget construction depends on LLUI being initialized @@ -792,7 +799,7 @@ bool LLAppViewer::init() #endif gGLManager.getGLInfo(gDebugInfo); - llinfos << gGLManager.getGLInfoString() << llendl; + gGLManager.printGLInfoString(); //load key settings bind_keyboard_functions(); @@ -800,7 +807,7 @@ bool LLAppViewer::init() // Load Default bindings if (!gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"keys.ini").c_str())) { - llerrs << "Unable to open keys.ini" << llendl; + LL_ERRS("InitInfo") << "Unable to open keys.ini" << LL_ENDL; } // Load Custom bindings (override defaults) gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"custom_keys.ini").c_str()); @@ -881,6 +888,10 @@ bool LLAppViewer::init() bool LLAppViewer::mainLoop() { + mMainloopTimeout = new LLWatchdogTimeout(); + // *FIX:Mani - Make this a setting, once new settings exist in this branch. + mMainloopTimeout->setTimeout(5); + //------------------------------------------- // Run main loop until time to quit //------------------------------------------- @@ -912,7 +923,7 @@ bool LLAppViewer::mainLoop() { LLFastTimer t2(LLFastTimer::FTM_MESSAGES); #if LL_WINDOWS - if (!LLWinDebug::setupExceptionHandler()) + if (!LLWinDebug::checkExceptionHandler()) { llwarns << " Someone took over my exception handler (post messagehandling)!" << llendl; } @@ -1061,6 +1072,8 @@ bool LLAppViewer::mainLoop() } //LLVFSThread::sLocal->pause(); // Prevent the VFS thread from running while rendering. //LLLFSThread::sLocal->pause(); // Prevent the LFS thread from running while rendering. + + mMainloopTimeout->ping(); } } @@ -1085,6 +1098,8 @@ bool LLAppViewer::mainLoop() delete gServicePump; + mMainloopTimeout->stop(); + llinfos << "Exiting main_loop" << llendflush; return true; @@ -1348,7 +1363,9 @@ bool LLAppViewer::cleanup() gStaticVFS = NULL; delete gVFS; gVFS = NULL; - + + LLWatchdog::getInstance()->cleanup(); + end_messaging_system(); // *NOTE:Mani - The following call is not thread safe. @@ -1382,6 +1399,9 @@ bool LLAppViewer::initThreads() #else static const bool enable_threads = true; #endif + + LLWatchdog::getInstance()->init(); + LLVFSThread::initClass(enable_threads && true); LLLFSThread::initClass(enable_threads && true); @@ -1436,7 +1456,7 @@ bool LLAppViewer::initLogging() } void LLAppViewer::loadSettingsFromDirectory(ELLPath path_index) -{ +{ for(LLSD::map_iterator itr = mSettingsFileList.beginMap(); itr != mSettingsFileList.endMap(); ++itr) { LLString settings_name = (*itr).first; @@ -1489,7 +1509,7 @@ std::string LLAppViewer::getSettingsFileName(const std::string& file) } bool LLAppViewer::initConfiguration() -{ +{ //Set up internal pointers gSettings[sGlobalSettingsName] = &gSavedSettings; gSettings[sPerAccountSettingsName] = &gSavedPerAccountSettings; @@ -2023,7 +2043,7 @@ bool LLAppViewer::initConfiguration() bool LLAppViewer::initWindow() { - llinfos << "Initializing window..." << llendl; + LL_INFOS("AppInit") << "Initializing window..." << LL_ENDL; // store setting in a global for easy access and modification gNoRender = gSavedSettings.getBOOL("DisableRendering"); @@ -2193,22 +2213,22 @@ void LLAppViewer::writeSystemInfo() gDebugInfo["OSInfo"] = getOSInfo().getOSStringSimple(); // Dump some debugging info - llinfos << gSecondLife + LL_INFOS("SystemInfo") << gSecondLife << " version " << LL_VERSION_MAJOR << "." << LL_VERSION_MINOR << "." << LL_VERSION_PATCH - << llendl; + << LL_ENDL; // Dump the local time and time zone time_t now; time(&now); char tbuffer[256]; /* Flawfinder: ignore */ strftime(tbuffer, 256, "%Y-%m-%dT%H:%M:%S %Z", localtime(&now)); - llinfos << "Local time: " << tbuffer << llendl; + LL_INFOS("SystemInfo") << "Local time: " << tbuffer << LL_ENDL; // query some system information - llinfos << "CPU info:\n" << gSysCPU << llendl; - llinfos << "Memory info:\n" << gSysMemory << llendl; - llinfos << "OS: " << getOSInfo().getOSStringSimple() << llendl; - llinfos << "OS info: " << getOSInfo() << llendl; + LL_INFOS("SystemInfo") << "CPU info:\n" << gSysCPU << LL_ENDL; + LL_INFOS("SystemInfo") << "Memory info:\n" << gSysMemory << LL_ENDL; + LL_INFOS("SystemInfo") << "OS: " << getOSInfo().getOSStringSimple() << LL_ENDL; + LL_INFOS("SystemInfo") << "OS info: " << getOSInfo() << LL_ENDL; } void LLAppViewer::handleSyncViewerCrash() @@ -2220,6 +2240,8 @@ void LLAppViewer::handleSyncViewerCrash() void LLAppViewer::handleViewerCrash() { + llinfos << "Handle viewer crash entry." << llendl; + LLAppViewer* pApp = LLAppViewer::instance(); if (pApp->beingDebugged()) { @@ -2286,11 +2308,11 @@ void LLAppViewer::handleViewerCrash() apr_file_t* crash_file = ll_apr_file_open(crash_file_name, LL_APR_W); if (crash_file) { - llinfos << "Created crash marker file " << crash_file_name << llendl; + LL_INFOS("MarkerFile") << "Created crash marker file " << crash_file_name << LL_ENDL; } else { - llwarns << "Cannot create error marker file " << crash_file_name << llendl; + LL_WARNS("MarkerFile") << "Cannot create error marker file " << crash_file_name << LL_ENDL; } apr_file_close(crash_file); } @@ -2302,6 +2324,7 @@ void LLAppViewer::handleViewerCrash() llofstream file(filename.c_str(), llofstream::binary); if(file.good()) { + llinfos << "Handle viewer crash generating stats log." << llendl; gMessageSystem->summarizeLogs(file); file.close(); } @@ -2317,6 +2340,7 @@ void LLAppViewer::handleViewerCrash() // Close the debug file pApp->closeDebug(); + LLError::logToFile(""); // Remove the marker file, since otherwise we'll spawn a process that'll keep it locked @@ -2347,7 +2371,7 @@ bool LLAppViewer::anotherInstanceRunning() // If the file is currently locked, that means another process is already running. std::string marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, MARKER_FILE_NAME); - llinfos << "Checking marker file for lock..." << llendl; + LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL; //Freeze case checks apr_file_t* fMarker = ll_apr_file_open(marker_file, LL_APR_RB); @@ -2359,19 +2383,19 @@ bool LLAppViewer::anotherInstanceRunning() if (fMarker == NULL) { // Another instance is running. Skip the rest of these operations. - llinfos << "Marker file is locked." << llendl; + LL_INFOS("MarkerFile") << "Marker file is locked." << LL_ENDL; return TRUE; } if (apr_file_lock(fMarker, APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE) != APR_SUCCESS) //flock(fileno(fMarker), LOCK_EX | LOCK_NB) == -1) { apr_file_close(fMarker); - llinfos << "Marker file is locked." << llendl; + LL_INFOS("MarkerFile") << "Marker file is locked." << LL_ENDL; return TRUE; } // No other instances; we'll lock this file now & delete on quit. apr_file_close(fMarker); } - llinfos << "Marker file isn't locked." << llendl; + LL_DEBUGS("MarkerFile") << "Marker file isn't locked." << LL_ENDL; return FALSE; } @@ -2382,7 +2406,7 @@ void LLAppViewer::initMarkerFile() //There are marker files for two different types of crashes mMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,MARKER_FILE_NAME); - llinfos << "Checking marker file for lock..." << llendl; + LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL; //We've got 4 things to test for here // - Other Process Running (SecondLife.exec_marker present, locked) @@ -2400,7 +2424,7 @@ void LLAppViewer::initMarkerFile() if(fMarker != NULL) { apr_file_close(fMarker); - llinfos << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << llendl; + LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << LL_ENDL; gLastExecEvent = LAST_EXEC_LOGOUT_FROZE; } fMarker = ll_apr_file_open(llerror_marker_file, LL_APR_RB); @@ -2415,7 +2439,7 @@ void LLAppViewer::initMarkerFile() if(fMarker != NULL) { apr_file_close(fMarker); - llinfos << "Last exec crashed, setting LastExecEvent to " << LAST_EXEC_OTHER_CRASH << llendl; + LL_INFOS("MarkerFile") << "Last exec crashed, setting LastExecEvent to " << LAST_EXEC_OTHER_CRASH << LL_ENDL; if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH; else gLastExecEvent = LAST_EXEC_OTHER_CRASH; } @@ -2435,34 +2459,33 @@ void LLAppViewer::initMarkerFile() { apr_file_close(fMarker); gLastExecEvent = LAST_EXEC_FROZE; - llinfos << "Exec marker found: program froze on previous execution" << llendl; + LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL; } // Create the marker file for this execution & lock it mMarkerFile = ll_apr_file_open(mMarkerFileName, LL_APR_W); if (mMarkerFile) { - llinfos << "Marker file created." << llendl; + LL_DEBUGS("MarkerFile") << "Marker file created." << LL_ENDL; } else { - llinfos << "Failed to create marker file." << llendl; + LL_INFOS("MarkerFile") << "Failed to create marker file." << LL_ENDL; return; } if (apr_file_lock(mMarkerFile, APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE) != APR_SUCCESS) { apr_file_close(mMarkerFile); - llinfos << "Marker file cannot be locked." << llendl; + LL_INFOS("MarkerFile") << "Marker file cannot be locked." << LL_ENDL; return; } - llinfos << "Marker file locked." << llendl; - llinfos << "Exiting initMarkerFile()." << llendl; + LL_DEBUGS("MarkerFile") << "Marker file locked." << LL_ENDL; } void LLAppViewer::removeMarkerFile(bool leave_logout_marker) { - llinfos << "removeMarkerFile()" << llendl; + LL_DEBUGS("MarkerFile") << "removeMarkerFile()" << LL_ENDL; if (mMarkerFile != NULL) { ll_apr_file_remove( mMarkerFileName ); @@ -2587,7 +2610,7 @@ bool LLAppViewer::initCache() if (!gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation"))) { - llwarns << "Unable to set cache location" << llendl; + LL_WARNS("AppCache") << "Unable to set cache location" << LL_ENDL; gSavedSettings.setString("CacheLocation", ""); } @@ -2624,7 +2647,7 @@ bool LLAppViewer::initCache() { gSavedSettings.setU32("VFSOldSize", vfs_size_u32/MB); } - llinfos << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << llendl; + LL_INFOS("AppCache") << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << LL_ENDL; // This has to happen BEFORE starting the vfs //time_t ltime; @@ -2688,8 +2711,7 @@ bool LLAppViewer::initCache() { sscanf(found_file.c_str() + start_pos, "%d", &old_salt); } - llinfos << "Default vfs data file not present, found " << old_vfs_data_file << llendl; - llinfos << "Old salt: " << old_salt << llendl; + LL_DEBUGS("AppCache") << "Default vfs data file not present, found: " << old_vfs_data_file << " Old salt: " << old_salt << llendl; } } @@ -2701,8 +2723,8 @@ bool LLAppViewer::initCache() if (stat_result) { // We've got a bad/missing index file, nukem! - llwarns << "Bad or missing vfx index file " << old_vfs_index_file << llendl; - llwarns << "Removing old vfs data file " << old_vfs_data_file << llendl; + LL_WARNS("AppCache") << "Bad or missing vfx index file " << old_vfs_index_file << LL_ENDL; + LL_WARNS("AppCache") << "Removing old vfs data file " << old_vfs_data_file << LL_ENDL; LLFile::remove(old_vfs_data_file); LLFile::remove(old_vfs_index_file); @@ -2739,7 +2761,7 @@ bool LLAppViewer::initCache() if (resize_vfs) { - llinfos << "Removing old vfs and re-sizing" << llendl; + LL_DEBUGS("AppCache") << "Removing old vfs and re-sizing" << LL_ENDL; LLFile::remove(old_vfs_data_file); LLFile::remove(old_vfs_index_file); @@ -2747,8 +2769,8 @@ bool LLAppViewer::initCache() else if (old_salt != new_salt) { // move the vfs files to a new name before opening - llinfos << "Renaming " << old_vfs_data_file << " to " << new_vfs_data_file << llendl; - llinfos << "Renaming " << old_vfs_index_file << " to " << new_vfs_index_file << llendl; + LL_DEBUGS("AppCache") << "Renaming " << old_vfs_data_file << " to " << new_vfs_data_file << LL_ENDL; + LL_DEBUGS("AppCache") << "Renaming " << old_vfs_index_file << " to " << new_vfs_index_file << LL_ENDL; LLFile::rename(old_vfs_data_file, new_vfs_data_file); LLFile::rename(old_vfs_index_file, new_vfs_index_file); } @@ -2762,7 +2784,7 @@ bool LLAppViewer::initCache() { // Try again with fresh files // (The constructor deletes corrupt files when it finds them.) - llwarns << "VFS corrupt, deleted. Making new VFS." << llendl; + LL_WARNS("AppCache") << "VFS corrupt, deleted. Making new VFS." << LL_ENDL; delete gVFS; gVFS = new LLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false); } @@ -2783,9 +2805,8 @@ bool LLAppViewer::initCache() void LLAppViewer::purgeCache() { - llinfos << "Purging Texture Cache..." << llendl; + LL_INFOS("AppCache") << "Purging Cache and Texture Cache..." << llendl; LLAppViewer::getTextureCache()->purgeCache(LL_PATH_CACHE); - llinfos << "Purging Cache..." << llendl; std::string mask = gDirUtilp->getDirDelimiter() + "*.*"; gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"").c_str(),mask); } @@ -2915,7 +2936,7 @@ void LLAppViewer::badNetworkHandler() #if LL_WINDOWS // Generates the minidump. - LLWinDebug::handleException(NULL); + LLWinDebug::generateCrashStacks(NULL); #endif LLAppViewer::handleSyncViewerCrash(); LLAppViewer::handleViewerCrash(); @@ -3693,3 +3714,19 @@ void LLAppViewer::forceErrorSoftwareException() // *FIX: Any way to insure it won't be handled? throw; } + +void LLAppViewer::startMainloopTimeout(F32 secs) +{ + if(secs < 0.0f) + { + secs = gSavedSettings.getF32("MainloopTimeoutDefault"); + } + + mMainloopTimeout->setTimeout(secs); + mMainloopTimeout->start(); +} + +void LLAppViewer::stopMainloopTimeout() +{ + mMainloopTimeout->stop(); +} diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 56dd0efbdd..de127e5cf8 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -35,7 +35,7 @@ class LLTextureCache; class LLWorkerThread; class LLTextureFetch; - +class LLWatchdogTimeout; class LLCommandLineParser; class LLAppViewer : public LLApp @@ -137,6 +137,11 @@ public: std::string getSettingsFileName(const std::string& file); + // For thread debugging. + // llstartup needs to control this. + // llworld, send_agent_pause() also controls this. + void startMainloopTimeout(F32 secs = -1.0f); + void stopMainloopTimeout(); protected: virtual bool initWindow(); // Initialize the viewer's window. @@ -207,6 +212,8 @@ private: bool mLogoutRequestSent; // Disconnect message sent to simulator, no longer safe to send messages to the sim. S32 mYieldTime; LLSD mSettingsFileList; + + LLWatchdogTimeout* mMainloopTimeout; }; // consts from viewer.h diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 28314cb0ae..f21bdc4243 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -47,7 +47,7 @@ #include "llfloaterworldmap.h" #include "llurldispatcher.h" #include <Carbon/Carbon.h> - +#include "lldir.h" namespace { // The command line args stored. @@ -197,12 +197,13 @@ void LLAppViewerMacOSX::handleCrashReporting() { // Macintosh LLString command_str; - command_str = "open crashreporter.app"; + command_str += "open crashreporter.app"; + + clear_signals(); + llinfos << "Launching crash reporter using: '" << command_str << "'" << llendl; system(command_str.c_str()); /* Flawfinder: ignore */ - - // Sometimes signals don't seem to quit the viewer. - // Make sure we exit so as to not totally confuse the user. - exit(1); + llinfos << "returned from crash reporter... dying" << llendl; + _exit(1); } std::string LLAppViewerMacOSX::generateSerialNumber() diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index fed538da37..53cc1d3e17 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -79,7 +79,7 @@ LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *excepti // Generate a minidump if we can. // Before we wake the error thread... // Which will start the crash reporting. - LLWinDebug::handleException(exception_infop); + LLWinDebug::generateCrashStacks(exception_infop); // Flag status to error, so thread_error starts its work LLApp::setError(); @@ -119,27 +119,11 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, LLAppViewerWin32* viewer_app_ptr = new LLAppViewerWin32(lpCmdLine); - // *FIX:Mani This method is poorly named, since the exception - // is now handled by LLApp. - bool ok = LLWinDebug::setupExceptionHandler(); + LLWinDebug::initExceptionHandler(viewer_windows_exception_handler); - // Actually here's the exception setup. - LPTOP_LEVEL_EXCEPTION_FILTER prev_filter; - prev_filter = SetUnhandledExceptionFilter(viewer_windows_exception_handler); - if (!prev_filter) - { - llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with NULL!" << llendl; - ok = FALSE; - } - if (prev_filter != LLWinDebug::handleException) - { - llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with " << prev_filter << "!" << llendl; - ok = FALSE; - } - viewer_app_ptr->setErrorHandler(LLAppViewer::handleViewerCrash); - ok = viewer_app_ptr->init(); + bool ok = viewer_app_ptr->init(); if(!ok) { llwarns << "Application init failed." << llendl; @@ -327,14 +311,14 @@ bool LLAppViewerWin32::initHardwareTest() LLSplashScreen::update("Detecting hardware..."); - llinfos << "Attempting to poll DirectX for hardware info" << llendl; + LL_DEBUGS("AppInit") << "Attempting to poll DirectX for hardware info" << LL_ENDL; gDXHardware.setWriteDebugFunc(write_debug_dx); BOOL probe_ok = gDXHardware.getInfo(vram_only); if (!probe_ok && gSavedSettings.getWarning("AboutDirectX9")) { - llinfos << "DirectX probe failed, alerting user." << llendl; + LL_WARNS("AppInit") << "DirectX probe failed, alerting user." << LL_ENDL; // Warn them that runnin without DirectX 9 will // not allow us to tell them about driver issues @@ -355,13 +339,13 @@ bool LLAppViewerWin32::initHardwareTest() OSMB_YESNO); if (OSBTN_NO== button) { - llinfos << "User quitting after failed DirectX 9 detection" << llendl; + LL_INFOS("AppInit") << "User quitting after failed DirectX 9 detection" << LL_ENDL; LLWeb::loadURLExternal(DIRECTX_9_URL); return false; } gSavedSettings.setWarning("AboutDirectX9", FALSE); } - llinfos << "Done polling DirectX for hardware info" << llendl; + LL_DEBUGS("AppInit") << "Done polling DirectX for hardware info" << LL_ENDL; // Only probe once after installation gSavedSettings.setBOOL("ProbeHardwareOnStartup", FALSE); @@ -373,13 +357,13 @@ bool LLAppViewerWin32::initHardwareTest() LLSplashScreen::update(splash_msg.str().c_str()); } - if (!LLWinDebug::setupExceptionHandler()) + if (!LLWinDebug::checkExceptionHandler()) { - llwarns << " Someone took over my exception handler (post hardware probe)!" << llendl; + LL_WARNS("AppInit") << " Someone took over my exception handler (post hardware probe)!" << LL_ENDL; } gGLManager.mVRAM = gDXHardware.getVRAM(); - llinfos << "Detected VRAM: " << gGLManager.mVRAM << llendl; + LL_INFOS("AppInit") << "Detected VRAM: " << gGLManager.mVRAM << LL_ENDL; return true; } diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 4aeb741b2c..b0dd0a99ac 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -418,7 +418,7 @@ void LLDrawable::makeStatic(BOOL warning_enabled) if (mParent.notNull() && mParent->isActive() && warning_enabled) { - llwarns << "Drawable becamse static with active parent!" << llendl; + LL_WARNS_ONCE("Drawable") << "Drawable becomes static with active parent!" << LL_ENDL; } S32 child_count = mVObjp->mChildList.size(); diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 4d8dbbebac..17e8429616 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -95,7 +95,7 @@ void LLFeatureList::addFeature(const char *name, const BOOL available, const F32 { if (mFeatures.count(name)) { - llwarns << "LLFeatureList::Attempting to add preexisting feature " << name << llendl; + LL_WARNS("RenderInit") << "LLFeatureList::Attempting to add preexisting feature " << name << LL_ENDL; } LLFeatureInfo fi(name, available, level); @@ -109,7 +109,7 @@ BOOL LLFeatureList::isFeatureAvailable(const char *name) return mFeatures[name].mAvailable; } - llwarns << "Feature " << name << " not on feature list!" << llendl; + LL_WARNS("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL; // changing this to TRUE so you have to explicitly disable // something for it to be disabled @@ -123,7 +123,7 @@ F32 LLFeatureList::getRecommendedValue(const char *name) return mFeatures[name].mRecommendedLevel; } - llwarns << "Feature " << name << " not on feature list or not available!" << llendl; + LL_WARNS("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL; return 0; } @@ -146,46 +146,46 @@ BOOL LLFeatureList::maskList(LLFeatureList &mask) // if (!mFeatures.count(mask_fi.mName)) { - llwarns << "Feature " << mask_fi.mName << " in mask not in top level!" << llendl; + LL_WARNS("RenderInit") << "Feature " << mask_fi.mName << " in mask not in top level!" << LL_ENDL; continue; } LLFeatureInfo &cur_fi = mFeatures[mask_fi.mName]; if (mask_fi.mAvailable && !cur_fi.mAvailable) { - llwarns << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << llendl; + LL_WARNS("RenderInit") << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << LL_ENDL; continue; } cur_fi.mAvailable = mask_fi.mAvailable; cur_fi.mRecommendedLevel = llmin(cur_fi.mRecommendedLevel, mask_fi.mRecommendedLevel); -#ifndef LL_RELEASE_FOR_DOWNLOAD - llinfos << "Feature mask " << mask.mName + LL_DEBUGS("RenderInit") << "Feature mask " << mask.mName << " Feature " << mask_fi.mName << " Mask: " << mask_fi.mRecommendedLevel - << " Now: " << cur_fi.mRecommendedLevel << llendl; -#endif + << " Now: " << cur_fi.mRecommendedLevel << LL_ENDL; } -#if 0 && !LL_RELEASE_FOR_DOWNLOAD - llinfos << "After applying mask " << mask.mName << llendl; - dump(); -#endif + LL_DEBUGS("RenderInit") << "After applying mask " << mask.mName << std::endl; + // Will conditionally call dump only if the above message will be logged, thanks + // to it being wrapped by the LL_DEBUGS and LL_ENDL macros. + dump(); + LL_CONT << LL_ENDL; + return TRUE; } void LLFeatureList::dump() { - llinfos << "Feature list: " << mName << llendl; - llinfos << "--------------" << llendl; + LL_DEBUGS("RenderInit") << "Feature list: " << mName << LL_ENDL; + LL_DEBUGS("RenderInit") << "--------------" << LL_ENDL; LLFeatureInfo fi; feature_map_t::iterator feature_it; for (feature_it = mFeatures.begin(); feature_it != mFeatures.end(); ++feature_it) { fi = feature_it->second; - llinfos << fi.mName << "\t\t" << fi.mAvailable << ":" << fi.mRecommendedLevel << llendl; + LL_DEBUGS("RenderInit") << fi.mName << "\t\t" << fi.mAvailable << ":" << fi.mRecommendedLevel << LL_ENDL; } - llinfos << llendl; + LL_DEBUGS("RenderInit") << LL_ENDL; } LLFeatureList *LLFeatureManager::findMask(const char *name) @@ -203,10 +203,10 @@ BOOL LLFeatureManager::maskFeatures(const char *name) LLFeatureList *maskp = findMask(name); if (!maskp) { -// llwarns << "Unknown feature mask " << name << llendl; + LL_DEBUGS("RenderInit") << "Unknown feature mask " << name << LL_ENDL; return FALSE; } - llinfos << "Applying Feature Mask: " << name << llendl; + LL_DEBUGS("RenderInit") << "Applying Feature Mask: " << name << LL_ENDL; return maskList(*maskp); } @@ -236,7 +236,7 @@ BOOL LLFeatureManager::loadFeatureTables() if (!file) { - llwarns << "Unable to open feature table!" << llendl; + LL_WARNS("RenderInit") << "Unable to open feature table!" << LL_ENDL; return FALSE; } @@ -245,7 +245,7 @@ BOOL LLFeatureManager::loadFeatureTables() file >> version; if (strcmp(name, "version")) { - llwarns << data_path << " does not appear to be a valid feature table!" << llendl; + LL_WARNS("RenderInit") << data_path << " does not appear to be a valid feature table!" << LL_ENDL; return FALSE; } @@ -285,7 +285,7 @@ BOOL LLFeatureManager::loadFeatureTables() file >> name; if (mMaskList.count(name)) { - llerrs << "Overriding mask " << name << ", this is invalid!" << llendl; + LL_ERRS("RenderInit") << "Overriding mask " << name << ", this is invalid!" << LL_ENDL; } flp = new LLFeatureList(name); @@ -295,7 +295,7 @@ BOOL LLFeatureManager::loadFeatureTables() { if (!flp) { - llerrs << "Specified parameter before <list> keyword!" << llendl; + LL_ERRS("RenderInit") << "Specified parameter before <list> keyword!" << LL_ENDL; } S32 available; F32 recommended; @@ -327,7 +327,7 @@ void LLFeatureManager::loadGPUClass() if (!file) { - llwarns << "Unable to open GPU table: " << data_path << "!" << llendl; + LL_WARNS("RenderInit") << "Unable to open GPU table: " << data_path << "!" << LL_ENDL; return; } @@ -398,7 +398,7 @@ void LLFeatureManager::loadGPUClass() { // if we found it, stop! file.close(); - llinfos << "GPU is " << label << llendl; + LL_INFOS("RenderInit") << "GPU is " << label << llendl; mGPUString = label; mGPUClass = (EGPUClass) strtol(cls.c_str(), NULL, 10); mGPUSupported = (BOOL) strtol(supported.c_str(), NULL, 10); @@ -408,7 +408,7 @@ void LLFeatureManager::loadGPUClass() } file.close(); - llwarns << "Couldn't match GPU to a class: " << gGLManager.getRawGLString() << llendl; + LL_WARNS("RenderInit") << "Couldn't match GPU to a class: " << gGLManager.getRawGLString() << LL_ENDL; } void LLFeatureManager::cleanupFeatureTables() @@ -546,7 +546,7 @@ void LLFeatureManager::applyBaseMasks() LLFeatureList* maskp = findMask("all"); if(maskp == NULL) { - llwarns << "AHH! No \"all\" in feature table!" << llendl; + LL_WARNS("RenderInit") << "AHH! No \"all\" in feature table!" << LL_ENDL; return; } @@ -563,12 +563,12 @@ void LLFeatureManager::applyBaseMasks() "Class3" }; - llinfos << "Setting GPU Class to " << class_table[mGPUClass] << llendl; + LL_INFOS("RenderInit") << "Setting GPU Class to " << class_table[mGPUClass] << LL_ENDL; maskFeatures(class_table[mGPUClass]); } else { - llinfos << "Setting GPU Class to Unknown" << llendl; + LL_INFOS("RenderInit") << "Setting GPU Class to Unknown" << LL_ENDL; maskFeatures("Unknown"); } diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index a13431d683..6a1b5d7758 100644 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h @@ -68,6 +68,7 @@ class LLPanelLogin: public LLPanel, public LLWebBrowserCtrlObserver { + LOG_CLASS(LLPanelLogin); public: LLPanelLogin(const LLRect &rect, BOOL show_server, void (*callback)(S32 option, void* user_data), diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index b8774ceef7..d931e84638 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -265,8 +265,8 @@ namespace const char* message, const LLSD& body, LLHTTPClient::ResponderPtr response) const { - llwarns << " attemped to send " << message << " to " << host - << " with null sender" << llendl; + LL_WARNS("AppInit") << " attemped to send " << message << " to " << host + << " with null sender" << LL_ENDL; } }; } @@ -428,13 +428,13 @@ BOOL idle_startup() if (ll_init_ares() == NULL) { - llerrs << "Could not start address resolution system" << llendl; + LL_ERRS("AppInit") << "Could not start address resolution system" << LL_ENDL; } // // Initialize messaging system // - llinfos << "Initializing messaging system..." << llendl; + LL_DEBUGS("AppInit") << "Initializing messaging system..." << LL_ENDL; std::string message_template_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"message_template.msg"); @@ -496,7 +496,7 @@ BOOL idle_startup() if (gSavedSettings.getBOOL("LogMessages")) { - llinfos << "Message logging activated!" << llendl; + LL_DEBUGS("AppInit") << "Message logging activated!" << LL_ENDL; msg->startLogging(); } @@ -521,13 +521,13 @@ BOOL idle_startup() F32 outBandwidth = gSavedSettings.getF32("OutBandwidth"); if (inBandwidth != 0.f) { - llinfos << "Setting packetring incoming bandwidth to " << inBandwidth << llendl; + LL_DEBUGS("AppInit") << "Setting packetring incoming bandwidth to " << inBandwidth << LL_ENDL; msg->mPacketRing.setUseInThrottle(TRUE); msg->mPacketRing.setInBandwidth(inBandwidth); } if (outBandwidth != 0.f) { - llinfos << "Setting packetring outgoing bandwidth to " << outBandwidth << llendl; + LL_DEBUGS("AppInit") << "Setting packetring outgoing bandwidth to " << outBandwidth << LL_ENDL; msg->mPacketRing.setUseOutThrottle(TRUE); msg->mPacketRing.setOutBandwidth(outBandwidth); } @@ -558,7 +558,7 @@ BOOL idle_startup() BOOL init = gAudiop->init(kAUDIO_NUM_SOURCES, window_handle); if(!init) { - llwarns << "Unable to initialize audio engine" << llendl; + LL_WARNS("AppInit") << "Unable to initialize audio engine" << LL_ENDL; } gAudiop->setMuted(TRUE); } @@ -566,7 +566,7 @@ BOOL idle_startup() if (LLTimer::knownBadTimer()) { - llwarns << "Unreliable timers detected (may be bad PCI chipset)!!" << llendl; + LL_WARNS("AppInit") << "Unreliable timers detected (may be bad PCI chipset)!!" << LL_ENDL; } // @@ -639,7 +639,7 @@ BOOL idle_startup() //--------------------------------------------------------------------- if (STATE_MEDIA_INIT == LLStartUp::getStartupState()) { - llinfos << "Initializing Multimedia...." << llendl; + LL_DEBUGS("AppInit") << "Initializing Multimedia...." << LL_ENDL; set_startup_status(0.03f, "Initializing Multimedia...", gAgent.mMOTD.c_str()); display_startup(); LLViewerMedia::initClass(); @@ -657,7 +657,7 @@ BOOL idle_startup() if (STATE_LOGIN_SHOW == LLStartUp::getStartupState()) { - llinfos << "Initializing Window" << llendl; + LL_DEBUGS("AppInit") << "Initializing Window" << LL_ENDL; gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); // Push our window frontmost @@ -668,11 +668,13 @@ BOOL idle_startup() if (show_connect_box) { // Load all the name information out of the login view - LLPanelLogin::getFields(firstname, lastname, password, remember_password); + // NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't + // show the login view until login_show() is called below. + // LLPanelLogin::getFields(firstname, lastname, password, remember_password); if (gNoRender) { - llerrs << "Need to autologin or use command line with norender!" << llendl; + LL_ERRS("AppInit") << "Need to autologin or use command line with norender!" << LL_ENDL; } // Make sure the process dialog doesn't hide things gViewerWindow->setShowProgress(FALSE); @@ -765,7 +767,7 @@ BOOL idle_startup() } gSavedSettings.setBOOL("RememberPassword", remember_password); - llinfos << "Attempting login as: " << firstname << " " << lastname << llendl; + LL_INFOS("AppInit") << "Attempting login as: " << firstname << " " << lastname << LL_ENDL; gDebugInfo["LoginName"] = firstname + " " + lastname; } @@ -911,7 +913,6 @@ BOOL idle_startup() gDebugInfo["GridName"] = gGridInfo[gGridChoice].mLabel; // *Note: this is where gUserAuth used to be created. - requested_options.clear(); requested_options.push_back("inventory-root"); requested_options.push_back("inventory-skeleton"); @@ -963,7 +964,7 @@ BOOL idle_startup() if (STATE_LOGIN_AUTHENTICATE == LLStartUp::getStartupState()) { - lldebugs << "STATE_LOGIN_AUTHENTICATE" << llendl; + LL_DEBUGS("AppInit") << "STATE_LOGIN_AUTHENTICATE" << LL_ENDL; set_startup_status(progress, auth_desc.c_str(), auth_message.c_str()); progress += 0.02f; display_startup(); @@ -1023,7 +1024,7 @@ BOOL idle_startup() if(STATE_LOGIN_NO_DATA_YET == LLStartUp::getStartupState()) { - //lldebugs << "STATE_LOGIN_NO_DATA_YET" << llendl; + LL_DEBUGS("AppInit") << "STATE_LOGIN_NO_DATA_YET" << LL_ENDL; // If we get here we have gotten past the potential stall // in curl, so take "may appear frozen" out of progress bar. JC auth_desc = "Logging in..."; @@ -1037,7 +1038,7 @@ BOOL idle_startup() LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse(); if(LLUserAuth::E_NO_RESPONSE_YET == error) { - //llinfos << "waiting..." << llendl; + LL_DEBUGS("AppInit") << "waiting..." << LL_ENDL; return do_normal_idle; } LLStartUp::setStartupState( STATE_LOGIN_DOWNLOADING ); @@ -1048,7 +1049,7 @@ BOOL idle_startup() if(STATE_LOGIN_DOWNLOADING == LLStartUp::getStartupState()) { - lldebugs << "STATE_LOGIN_DOWNLOADING" << llendl; + LL_DEBUGS("AppInit") << "STATE_LOGIN_DOWNLOADING" << LL_ENDL; // Process messages to keep from dropping circuit. LLMessageSystem* msg = gMessageSystem; while (msg->checkAllMessages(gFrameCount, gServicePump)) @@ -1058,7 +1059,7 @@ BOOL idle_startup() LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse(); if(LLUserAuth::E_DOWNLOADING == error) { - //llinfos << "downloading..." << llendl; + LL_DEBUGS("AppInit") << "downloading..." << LL_ENDL; return do_normal_idle; } LLStartUp::setStartupState( STATE_LOGIN_PROCESS_RESPONSE ); @@ -1069,7 +1070,7 @@ BOOL idle_startup() if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState()) { - lldebugs << "STATE_LOGIN_PROCESS_RESPONSE" << llendl; + LL_DEBUGS("AppInit") << "STATE_LOGIN_PROCESS_RESPONSE" << LL_ENDL; std::ostringstream emsg; BOOL quit = FALSE; const char* login_response = NULL; @@ -1091,7 +1092,7 @@ BOOL idle_startup() } else if(login_response && (0 == strcmp(login_response, "indeterminate"))) { - llinfos << "Indeterminate login..." << llendl; + LL_INFOS("AppInit") << "Indeterminate login..." << LL_ENDL; sAuthUris = LLSRV::rewriteURI(LLUserAuth::getInstance()->getResponse("next_url")); sAuthUriNum = 0; auth_method = LLUserAuth::getInstance()->getResponse("next_method"); @@ -1138,7 +1139,7 @@ BOOL idle_startup() { if (show_connect_box) { - llinfos << "Need tos agreement" << llendl; + LL_DEBUGS("AppInit") << "Need tos agreement" << LL_ENDL; LLStartUp::setStartupState( STATE_UPDATE_CHECK ); LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS, message_response); @@ -1155,7 +1156,7 @@ BOOL idle_startup() { if (show_connect_box) { - llinfos << "Need critical message" << llendl; + LL_DEBUGS("AppInit") << "Need critical message" << LL_ENDL; LLStartUp::setStartupState( STATE_UPDATE_CHECK ); LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_CRITICAL_MESSAGE, message_response); @@ -1190,7 +1191,7 @@ BOOL idle_startup() } if(reason_response && (0 == strcmp(reason_response, "optional"))) { - llinfos << "Login got optional update" << llendl; + LL_DEBUGS("AppInit") << "Login got optional update" << LL_ENDL; auth_message = LLUserAuth::getInstance()->getResponse("message"); if (show_connect_box) { @@ -1453,8 +1454,8 @@ BOOL idle_startup() { if (gNoRender) { - llinfos << "Bad login - missing return values" << llendl; - llinfos << emsg << llendl; + LL_WARNS("AppInit") << "Bad login - missing return values" << LL_ENDL; + LL_WARNS("AppInit") << emsg << LL_ENDL; exit(0); } // Bounce back to the login screen. @@ -1473,8 +1474,8 @@ BOOL idle_startup() { if (gNoRender) { - llinfos << "Failed to login!" << llendl; - llinfos << emsg << llendl; + LL_WARNS("AppInit") << "Failed to login!" << LL_ENDL; + LL_WARNS("AppInit") << emsg << LL_ENDL; exit(0); } // Bounce back to the login screen. @@ -1543,11 +1544,11 @@ BOOL idle_startup() LLWorld::getInstance()->addRegion(first_sim_handle, first_sim); LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(first_sim_handle); - llinfos << "Adding initial simulator " << regionp->getOriginGlobal() << llendl; + LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL; LLStartUp::setStartupState( STATE_SEED_GRANTED_WAIT ); regionp->setSeedCapability(first_sim_seed_cap); - llinfos << "Waiting for seed grant ...." << llendl; + LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL; // Set agent's initial region to be the one we just created. gAgent.setRegion(regionp); @@ -1615,7 +1616,7 @@ BOOL idle_startup() // // Set message handlers // - llinfos << "Initializing communications..." << llendl; + LL_INFOS("AppInit") << "Initializing communications..." << LL_ENDL; // register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted register_viewer_callbacks(gMessageSystem); @@ -1664,7 +1665,7 @@ BOOL idle_startup() // Sets up the parameters for the first simulator - llinfos << "Initializing camera..." << llendl; + LL_DEBUGS("AppInit") << "Initializing camera..." << LL_ENDL; gFrameTime = totalTime(); F32 last_time = gFrameTimeSeconds; gFrameTimeSeconds = (S64)(gFrameTime - gStartTime)/SEC_TO_MICROSEC; @@ -1699,12 +1700,12 @@ BOOL idle_startup() // Initialize global class data needed for surfaces (i.e. textures) if (!gNoRender) { - llinfos << "Initializing sky..." << llendl; + LL_DEBUGS("AppInit") << "Initializing sky..." << LL_ENDL; // Initialize all of the viewer object classes for the first time (doing things like texture fetches. gSky.init(initial_sun_direction); } - llinfos << "Decoding images..." << llendl; + LL_DEBUGS("AppInit") << "Decoding images..." << LL_ENDL; // For all images pre-loaded into viewer cache, decode them. // Need to do this AFTER we init the sky const S32 DECODE_TIME_SEC = 2; @@ -1722,14 +1723,14 @@ BOOL idle_startup() LLMessageSystem* msg = gMessageSystem; if (!msg->mOurCircuitCode) { - llwarns << "Attempting to connect to simulator with a zero circuit code!" << llendl; + LL_WARNS("AppInit") << "Attempting to connect to simulator with a zero circuit code!" << LL_ENDL; } gUseCircuitCallbackCalled = FALSE; msg->enableCircuit(first_sim, TRUE); // now, use the circuit info to tell simulator about us! - llinfos << "viewer: UserLoginLocationReply() Enabling " << first_sim << " with code " << msg->mOurCircuitCode << llendl; + LL_INFOS("AppInit") << "viewer: UserLoginLocationReply() Enabling " << first_sim << " with code " << msg->mOurCircuitCode << LL_ENDL; msg->newMessageFast(_PREHASH_UseCircuitCode); msg->nextBlockFast(_PREHASH_CircuitCode); msg->addU32Fast(_PREHASH_Code, msg->mOurCircuitCode); @@ -1755,7 +1756,7 @@ BOOL idle_startup() //--------------------------------------------------------------------- if(STATE_WORLD_WAIT == LLStartUp::getStartupState()) { - //llinfos << "Waiting for simulator ack...." << llendl; + LL_DEBUGS("AppInit") << "Waiting for simulator ack...." << LL_ENDL; set_startup_status(0.59f, LLTrans::getString("LoginWaitingForRegionHandshake").c_str(), gAgent.mMOTD.c_str()); if(gGotUseCircuitCodeAck) { @@ -1774,7 +1775,7 @@ BOOL idle_startup() //--------------------------------------------------------------------- if (STATE_AGENT_SEND == LLStartUp::getStartupState()) { - llinfos << "Connecting to region..." << llendl; + LL_DEBUGS("AppInit") << "Connecting to region..." << LL_ENDL; set_startup_status(0.60f, LLTrans::getString("LoginConnectingToRegion").c_str(), gAgent.mMOTD.c_str()); // register with the message system so it knows we're // expecting this message @@ -1826,8 +1827,8 @@ BOOL idle_startup() } else { - //llinfos << "Awaiting AvatarInitComplete, got " - //<< msg->getMessageName() << llendl; + LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got " + << msg->getMessageName() << LL_ENDL; } } msg->processAcks(); @@ -1879,7 +1880,7 @@ BOOL idle_startup() { if(!gInventory.loadSkeleton(options, gInventoryLibraryOwner)) { - llwarns << "Problem loading inventory-skel-lib" << llendl; + LL_WARNS("AppInit") << "Problem loading inventory-skel-lib" << LL_ENDL; } } options.clear(); @@ -1887,8 +1888,7 @@ BOOL idle_startup() { if(!gInventory.loadSkeleton(options, gAgent.getID())) { - llwarns << "Problem loading inventory-skel-targets" - << llendl; + LL_WARNS("AppInit") << "Problem loading inventory-skel-targets" << LL_ENDL; } } @@ -2040,17 +2040,17 @@ BOOL idle_startup() if (rate_bps > FASTER_RATE_BPS && rate_bps > max_bandwidth) { - llinfos << "Fast network connection, increasing max bandwidth to " + LL_DEBUGS("AppInit") << "Fast network connection, increasing max bandwidth to " << FASTER_RATE_BPS/1024.f - << " kbps" << llendl; + << " kbps" << LL_ENDL; gViewerThrottle.setMaxBandwidth(FASTER_RATE_BPS / 1024.f); } else if (rate_bps > FAST_RATE_BPS && rate_bps > max_bandwidth) { - llinfos << "Fast network connection, increasing max bandwidth to " + LL_DEBUGS("AppInit") << "Fast network connection, increasing max bandwidth to " << FAST_RATE_BPS/1024.f - << " kbps" << llendl; + << " kbps" << LL_ENDL; gViewerThrottle.setMaxBandwidth(FAST_RATE_BPS / 1024.f); } } @@ -2082,8 +2082,8 @@ BOOL idle_startup() LLUserAuth::options_t gesture_options; if (LLUserAuth::getInstance()->getOptions("gestures", gesture_options)) { - llinfos << "Gesture Manager loading " << gesture_options.size() - << llendl; + LL_DEBUGS("AppInit") << "Gesture Manager loading " << gesture_options.size() + << LL_ENDL; std::vector<LLUUID> item_ids; LLUserAuth::options_t::iterator resp_it; for (resp_it = gesture_options.begin(); @@ -2136,7 +2136,7 @@ BOOL idle_startup() msg->setHandlerFuncFast(_PREHASH_AttachedSound, process_attached_sound); msg->setHandlerFuncFast(_PREHASH_AttachedSoundGainChange, process_attached_sound_gain_change); - llinfos << "Initialization complete" << llendl; + LL_DEBUGS("AppInit") << "Initialization complete" << LL_ENDL; gRenderStartTime.reset(); gForegroundTime.reset(); @@ -2273,7 +2273,7 @@ BOOL idle_startup() gViewerWindow->showCursor(); gViewerWindow->getWindow()->resetBusyCount(); gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); - //llinfos << "Done releasing bitmap" << llendl; + LL_DEBUGS("AppInit") << "Done releasing bitmap" << LL_ENDL; gViewerWindow->setShowProgress(FALSE); gViewerWindow->setProgressCancelButtonVisible(FALSE, ""); @@ -2295,7 +2295,7 @@ BOOL idle_startup() if (gSavedSettings.getBOOL("StatsAutoRun")) { LLUUID id; - llinfos << "Starting automatic playback" << llendl; + LL_DEBUGS("AppInit") << "Starting automatic playback" << LL_ENDL; gAgentPilot.startPlayback(); } @@ -2311,9 +2311,9 @@ BOOL idle_startup() // Unmute audio if desired and setup volumes. // This is a not-uncommon crash site, so surround it with // llinfos output to aid diagnosis. - llinfos << "Doing first audio_update_volume..." << llendl; + LL_INFOS("AppInit") << "Doing first audio_update_volume..." << LL_ENDL; audio_update_volume(); - llinfos << "Done first audio_update_volume." << llendl; + LL_INFOS("AppInit") << "Done first audio_update_volume." << LL_ENDL; // reset keyboard focus to sane state of pointing at world gFocusMgr.setKeyboardFocus(NULL); @@ -2322,10 +2322,12 @@ BOOL idle_startup() gDebugView->mFastTimerView->setVisible(TRUE); #endif + LLAppViewer::instance()->startMainloopTimeout(); + return do_normal_idle; } - llwarns << "Reached end of idle_startup for state " << LLStartUp::getStartupState() << llendl; + LL_WARNS("AppInit") << "Reached end of idle_startup for state " << LLStartUp::getStartupState() << LL_ENDL; return do_normal_idle; } @@ -2335,7 +2337,7 @@ BOOL idle_startup() void login_show() { - llinfos << "Initializing Login Screen" << llendl; + LL_INFOS("AppInit") << "Initializing Login Screen" << LL_ENDL; #ifdef LL_RELEASE_FOR_DOWNLOAD BOOL bUseDebugLogin = gSavedSettings.getBOOL("UseDebugLogin"); @@ -2349,7 +2351,7 @@ void login_show() // UI textures have been previously loaded in doPreloadImages() - llinfos << "Setting Servers" << llendl; + LL_DEBUGS("AppInit") << "Setting Servers" << LL_ENDL; if( GRID_INFO_OTHER == gGridChoice ) { @@ -2418,7 +2420,7 @@ void login_callback(S32 option, void *userdata) } else { - llwarns << "Unknown login button clicked" << llendl; + LL_WARNS("AppInit") << "Unknown login button clicked" << LL_ENDL; } } @@ -2503,7 +2505,7 @@ void save_password_to_disk(const char* hashed_password) if (fwrite(buffer, HASHED_LENGTH, 1, fp) != 1) { - llwarns << "Short write" << llendl; + LL_WARNS("AppInit") << "Short write" << LL_ENDL; } fclose(fp); @@ -2553,7 +2555,7 @@ void first_run_dialog_callback(S32 option, void* userdata) { if (0 == option) { - llinfos << "First run dialog cancelling" << llendl; + LL_DEBUGS("AppInit") << "First run dialog cancelling" << LL_ENDL; LLWeb::loadURL( CREATE_ACCOUNT_URL ); } @@ -2586,7 +2588,7 @@ void login_alert_status(S32 option, void* user_data) LLStartUp::setStartupState( STATE_LOGIN_CLEANUP ); break; default: - llwarns << "Missing case in login_alert_status switch" << llendl; + LL_WARNS("AppInit") << "Missing case in login_alert_status switch" << LL_ENDL; } LLPanelLogin::giveFocus(); @@ -2704,7 +2706,7 @@ void update_dialog_callback(S32 option, void *userdata) if (update_exe_path.empty()) { // We're hosed, bail - llwarns << "LLDir::getTempFilename() failed" << llendl; + LL_WARNS("AppInit") << "LLDir::getTempFilename() failed" << LL_ENDL; LLAppViewer::instance()->forceQuit(); return; } @@ -2715,14 +2717,14 @@ void update_dialog_callback(S32 option, void *userdata) updater_source += gDirUtilp->getDirDelimiter(); updater_source += "updater.exe"; - llinfos << "Calling CopyFile source: " << updater_source.c_str() + LL_DEBUGS("AppInit") << "Calling CopyFile source: " << updater_source.c_str() << " dest: " << update_exe_path - << llendl; + << LL_ENDL; if (!CopyFileA(updater_source.c_str(), update_exe_path.c_str(), FALSE)) { - llinfos << "Unable to copy the updater!" << llendl; + LL_WARNS("AppInit") << "Unable to copy the updater!" << LL_ENDL; LLAppViewer::instance()->forceQuit(); return; } @@ -2760,14 +2762,14 @@ void update_dialog_callback(S32 option, void *userdata) params << " -program \"" << program_name << "\""; } - llinfos << "Calling updater: " << update_exe_path << " " << params.str() << llendl; + LL_DEBUGS("AppInit") << "Calling updater: " << update_exe_path << " " << params.str() << LL_ENDL; //Explicitly remove the marker file, otherwise we pass the lock onto the child process and things get weird. LLAppViewer::instance()->removeMarkerFile(); // In case updater fails // Use spawn() to run asynchronously int retval = _spawnl(_P_NOWAIT, update_exe_path.c_str(), update_exe_path.c_str(), params.str().c_str(), NULL); - llinfos << "Spawn returned " << retval << llendl; + LL_DEBUGS("AppInit") << "Spawn returned " << retval << LL_ENDL; #elif LL_DARWIN // if a sim name was passed in via command line parameter (typically through a SLURL) @@ -2785,7 +2787,7 @@ void update_dialog_callback(S32 option, void *userdata) update_exe_path += LLAppViewer::instance()->getSecondLifeTitle(); update_exe_path += "\" &"; - llinfos << "Calling updater: " << update_exe_path << llendl; + LL_DEBUGS("AppInit") << "Calling updater: " << update_exe_path << LL_ENDL; // *REMOVE:Mani The following call is handled through ~LLAppViewer. // remove_marker_file(); // In case updater fails @@ -2815,7 +2817,7 @@ void use_circuit_callback(void**, S32 result) if (result) { // Make sure user knows something bad happened. JC - llinfos << "Backing up to login screen!" << llendl; + LL_WARNS("AppInit") << "Backing up to login screen!" << LL_ENDL; gViewerWindow->alertXml("LoginPacketNeverReceived", login_alert_status, NULL); reset_login(); @@ -3662,10 +3664,10 @@ void init_start_screen(S32 location_id) if (gStartImageGL.notNull()) { gStartImageGL = NULL; - llinfos << "re-initializing start screen" << llendl; + LL_INFOS("AppInit") << "re-initializing start screen" << LL_ENDL; } - llinfos << "Loading startup bitmap..." << llendl; + LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL; LLString temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter(); @@ -3684,12 +3686,12 @@ void init_start_screen(S32 location_id) // driver bug if(!gSavedSettings.getBOOL("UseStartScreen")) { - llinfos << "Bitmap load disabled" << llendl; + LL_INFOS("AppInit") << "Bitmap load disabled" << LL_ENDL; return; } else if(!start_image_bmp->load(temp_str) ) { - llinfos << "Bitmap load failed" << llendl; + LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL; return; } @@ -3700,7 +3702,7 @@ void init_start_screen(S32 location_id) LLPointer<LLImageRaw> raw = new LLImageRaw; if (!start_image_bmp->decode(raw, 0.0f)) { - llinfos << "Bitmap decode failed" << llendl; + LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL; gStartImageGL = NULL; return; } @@ -3713,7 +3715,7 @@ void init_start_screen(S32 location_id) // frees the bitmap void release_start_screen() { - //llinfos << "Releasing bitmap..." << llendl; + LL_DEBUGS("AppInit") << "Releasing bitmap..." << LL_ENDL; gStartImageGL = NULL; } @@ -3721,7 +3723,7 @@ void release_start_screen() // static void LLStartUp::setStartupState( S32 state ) { - llinfos << "Startup state changing from " << gStartupState << " to " << state << llendl; + LL_INFOS("AppInit") << "Startup state changing from " << gStartupState << " to " << state << LL_ENDL; gStartupState = state; } diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 6aba05a788..534d19874c 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1023,8 +1023,8 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only) sCacheMaxTexturesSize = max_size; max_size -= sCacheMaxTexturesSize; - llinfos << "TEXTURE CACHE: Headers: " << sCacheMaxEntries - << " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << llendl; + LL_INFOS("TextureCache") << "Headers: " << sCacheMaxEntries + << " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << LL_ENDL; setDirNames(location); @@ -1161,7 +1161,7 @@ void LLTextureCache::purgeTextures(bool validate) S32 num_entries = filesize / sizeof(Entry); if (num_entries * (S32)sizeof(Entry) != filesize) { - llwarns << "Bad cache file: " << mTexturesDirEntriesFileName << " Purging." << llendl; + LL_WARNS("TextureCache") << "Bad cache file: " << mTexturesDirEntriesFileName << " Purging." << LL_ENDL; purgeAllTextures(false); return; } @@ -1175,19 +1175,19 @@ void LLTextureCache::purgeTextures(bool validate) (U8*)entries, 0, num_entries*sizeof(Entry)); if (bytes_read != filesize) { - llwarns << "Bad cache file (2): " << mTexturesDirEntriesFileName << " Purging." << llendl; + LL_WARNS("TextureCache") << "Bad cache file (2): " << mTexturesDirEntriesFileName << " Purging." << LL_ENDL; purgeAllTextures(false); return; } - llinfos << "TEXTURE CACHE: Reading Entries..." << llendl; + LL_DEBUGS("TextureCache") << "TEXTURE CACHE: Reading Entries..." << LL_ENDL; std::map<LLUUID, S32> entry_idx_map; S64 total_size = 0; for (S32 idx=0; idx<num_entries; idx++) { const LLUUID& id = entries[idx].mID; -// llinfos << "Entry: " << id << " Size: " << entries[i].mSize << " Time: " << entries[i].mTime << llendl; + LL_DEBUGS("TextureCache") << "Entry: " << id << " Size: " << entries[idx].mSize << " Time: " << entries[idx].mTime << LL_ENDL; std::map<LLUUID, S32>::iterator iter = entry_idx_map.find(id); if (iter != entry_idx_map.end()) { @@ -1206,7 +1206,7 @@ void LLTextureCache::purgeTextures(bool validate) validate_idx = gSavedSettings.getU32("CacheValidateCounter"); U32 next_idx = (++validate_idx) % 256; gSavedSettings.setU32("CacheValidateCounter", next_idx); - llinfos << "TEXTURE CACHE: Validating: " << validate_idx << llendl; + LL_DEBUGS("TextureCache") << "TEXTURE CACHE: Validating: " << validate_idx << LL_ENDL; } S64 min_cache_size = (sCacheMaxTexturesSize * 9) / 10; @@ -1230,12 +1230,12 @@ void LLTextureCache::purgeTextures(bool validate) S32 uuididx = entries[idx].mID.mData[0]; if (uuididx == validate_idx) { -// llinfos << "Validating: " << filename << "Size: " << entries[idx].mSize << llendl; + LL_DEBUGS("TextureCache") << "Validating: " << filename << "Size: " << entries[idx].mSize << LL_ENDL; S32 bodysize = ll_apr_file_size(filename, NULL); if (bodysize != entries[idx].mSize) { - llwarns << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mSize - << filename << llendl; + LL_WARNS("TextureCache") << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mSize + << filename << LL_ENDL; purge_entry = true; } } @@ -1243,7 +1243,7 @@ void LLTextureCache::purgeTextures(bool validate) if (purge_entry) { purge_count++; -// llinfos << "PURGING: " << filename << llendl; + LL_DEBUGS("TextureCache") << "PURGING: " << filename << LL_ENDL; ll_apr_file_remove(filename, NULL); total_size -= entries[idx].mSize; entries[idx].mSize = 0; @@ -1259,7 +1259,7 @@ void LLTextureCache::purgeTextures(bool validate) } num_entries = next_idx; - llinfos << "TEXTURE CACHE: Writing Entries: " << num_entries << llendl; + LL_DEBUGS("TextureCache") << "TEXTURE CACHE: Writing Entries: " << num_entries << LL_ENDL; ll_apr_file_remove(mTexturesDirEntriesFileName, NULL); ll_apr_file_write_ex(mTexturesDirEntriesFileName, NULL, @@ -1276,7 +1276,7 @@ void LLTextureCache::purgeTextures(bool validate) delete[] entries; - llinfos << "TEXTURE CACHE:" + LL_INFOS("TextureCache") << "TEXTURE CACHE:" << " PURGED: " << purge_count << " ENTRIES: " << num_entries << " CACHE SIZE: " << total_size / 1024*1024 << " MB" diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index ce23efe2f0..19035e8fc8 100644 --- a/indra/newview/llviewerjointmesh.cpp +++ b/indra/newview/llviewerjointmesh.cpp @@ -870,9 +870,9 @@ void LLViewerJointMesh::updateVectorize() case 1: vp = "SSE"; break; default: vp = "COMPILER DEFAULT"; break; } - llinfos << "Vectorization : " << ( vectorizeEnable ? "ENABLED" : "DISABLED" ) << llendl ; - llinfos << "Vector Processor : " << vp << llendl ; - llinfos << "Vectorized Skinning : " << ( vectorizeSkin ? "ENABLED" : "DISABLED" ) << llendl ; + LL_INFOS("AppInit") << "Vectorization : " << ( vectorizeEnable ? "ENABLED" : "DISABLED" ) << LL_ENDL ; + LL_INFOS("AppInit") << "Vector Processor : " << vp << LL_ENDL ; + LL_INFOS("AppInit") << "Vectorized Skinning : " << ( vectorizeSkin ? "ENABLED" : "DISABLED" ) << LL_ENDL ; if(vectorizeEnable && vectorizeSkin) { switch(sVectorizeProcessor) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index f7b9d2dc93..fd2a906edd 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1096,7 +1096,9 @@ void init_client_menu(LLMenuGL* menu) { LLMenuGL* sub = NULL; sub = new LLMenuGL("Debugging"); +#if LL_WINDOWS sub->append(new LLMenuItemCallGL("Force Breakpoint", &force_error_breakpoint, NULL, NULL, 'B', MASK_CONTROL | MASK_ALT)); +#endif sub->append(new LLMenuItemCallGL("Force LLError And Crash", &force_error_llerror)); sub->append(new LLMenuItemCallGL("Force Bad Memory Access", &force_error_bad_memory_access)); sub->append(new LLMenuItemCallGL("Force Infinite Loop", &force_error_infinite_loop)); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3b2b82e1f9..391a5ad5cb 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -202,7 +202,7 @@ void give_money(const LLUUID& uuid, LLViewerRegion* region, S32 amount, BOOL is_ { if(0 == amount) return; amount = abs(amount); - llinfos << "give_money(" << uuid << "," << amount << ")"<< llendl; + LL_INFOS("Messaging") << "give_money(" << uuid << "," << amount << ")"<< LL_ENDL; if(can_afford_transaction(amount)) { // gStatusBar->debitBalance(amount); @@ -242,7 +242,7 @@ void send_complete_agent_movement(const LLHost& sim_host) void process_logout_reply(LLMessageSystem* msg, void**) { // The server has told us it's ok to quit. - llinfos << "process_logout_reply" << llendl; + LL_DEBUGS("Messaging") << "process_logout_reply" << LL_ENDL; LLUUID agent_id; msg->getUUID("AgentData", "AgentID", agent_id); @@ -250,7 +250,7 @@ void process_logout_reply(LLMessageSystem* msg, void**) msg->getUUID("AgentData", "SessionID", session_id); if((agent_id != gAgent.getID()) || (session_id != gAgent.getSessionID())) { - llwarns << "Bogus Logout Reply" << llendl; + LL_WARNS("Messaging") << "Bogus Logout Reply" << LL_ENDL; } LLInventoryModel::update_map_t parents; @@ -268,7 +268,7 @@ void process_logout_reply(LLMessageSystem* msg, void**) // We do not need to track the asset ids, just account for an // updated inventory version. - llinfos << "process_logout_reply itemID=" << item_id << llendl; + LL_INFOS("Messaging") << "process_logout_reply itemID=" << item_id << LL_ENDL; LLInventoryItem* item = gInventory.getItem( item_id ); if( item ) { @@ -277,7 +277,7 @@ void process_logout_reply(LLMessageSystem* msg, void**) } else { - llinfos << "process_logout_reply item not found: " << item_id << llendl; + LL_INFOS("Messaging") << "process_logout_reply item not found: " << item_id << LL_ENDL; } } LLAppViewer::instance()->forceQuit(); @@ -300,15 +300,15 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data) size = mesgsys->getSizeFast(_PREHASH_LayerData, _PREHASH_Data); if (0 == size) { - llwarns << "Layer data has zero size." << llendl; + LL_WARNS("Messaging") << "Layer data has zero size." << LL_ENDL; return; } if (size < 0) { // getSizeFast() is probably trying to tell us about an error - llwarns << "getSizeFast() returned negative result: " + LL_WARNS("Messaging") << "getSizeFast() returned negative result: " << size - << llendl; + << LL_ENDL; return; } U8 *datap = new U8[size]; @@ -353,7 +353,7 @@ void export_complete() size_t nread = fread(buffer, 1, length, fXML); if (nread < (size_t) length) { - llwarns << "Short read" << llendl; + LL_WARNS("Messaging") << "Short read" << LL_ENDL; } buffer[nread] = '\0'; fclose(fXML); @@ -375,12 +375,12 @@ void export_complete() LLUUID image_uuid(image_uuid_str); - llinfos << "Found UUID: " << image_uuid << llendl; + LL_INFOS("Messaging") << "Found UUID: " << image_uuid << LL_ENDL; std::map<LLUUID, LLString>::iterator itor = gImageChecksums.find(image_uuid); if (itor != gImageChecksums.end()) { - llinfos << "Replacing with checksum: " << itor->second << llendl; + LL_INFOS("Messaging") << "Replacing with checksum: " << itor->second << LL_ENDL; if (itor->second.c_str() != NULL) { memcpy(&pos_check[10], itor->second.c_str(), 32); /* Flawfinder: ignore */ @@ -393,7 +393,7 @@ void export_complete() LLFILE* fXMLOut = LLFile::fopen(gExportedFile.c_str(), "wb"); /* Flawfinder: ignore */ if (fwrite(buffer, 1, length, fXMLOut) != length) { - llwarns << "Short write" << llendl; + LL_WARNS("Messaging") << "Short write" << LL_ENDL; } fclose(fXMLOut); @@ -407,14 +407,14 @@ void exported_item_complete(const LLTSCode status, void *user_data) if (status < LLTS_OK) { - llinfos << "Export failed!" << llendl; + LL_WARNS("Messaging") << "Export failed!" << LL_ENDL; } else { ++current_object_count; if (current_image_count == exported_image_count && current_object_count == exported_object_count) { - llinfos << "*** Export complete ***" << llendl; + LL_INFOS("Messaging") << "*** Export complete ***" << LL_ENDL; export_complete(); } @@ -442,7 +442,7 @@ void exported_j2c_complete(const LLTSCode status, void *user_data) if (status < LLTS_OK) { - llinfos << "Image download failed!" << llendl; + LL_WARNS("Messaging") << "Image download failed!" << LL_ENDL; } else { @@ -458,7 +458,7 @@ void exported_j2c_complete(const LLTSCode status, void *user_data) U8 *buffer = ImageUtility->allocateData(length); if (fread(buffer, 1, length, fIn) != length) { - llwarns << "Short read" << llendl; + LL_WARNS("Messaging") << "Short read" << LL_ENDL; } fclose(fIn); LLFile::remove(filename.c_str()); @@ -488,7 +488,7 @@ void exported_j2c_complete(const LLTSCode status, void *user_data) { if (fwrite(data, 1, data_size, fOut) != data_size) { - llwarns << "Short write" << llendl; + LL_WARNS("Messaging") << "Short write" << LL_ENDL; } fseek(fOut, 0, SEEK_SET); fclose(fOut); @@ -504,7 +504,7 @@ void exported_j2c_complete(const LLTSCode status, void *user_data) ++current_image_count; if (current_image_count == exported_image_count && current_object_count == exported_object_count) { - llinfos << "*** Export textures complete ***" << llendl; + LL_INFOS("Messaging") << "*** Export textures complete ***" << LL_ENDL; export_complete(); } else @@ -533,7 +533,7 @@ void process_places_reply(LLMessageSystem* msg, void** data) } else { - llwarns << "Got invalid PlacesReply message" << llendl; + LL_WARNS("Messaging") << "Got invalid PlacesReply message" << LL_ENDL; } } @@ -705,7 +705,7 @@ public: virtual ~LLDiscardAgentOffer() {} virtual void done() { - lldebugs << "LLDiscardAgentOffer::done()" << llendl; + LL_DEBUGS("Messaging") << "LLDiscardAgentOffer::done()" << LL_ENDL; LLUUID trash_id; trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH); bool notify = false; @@ -729,9 +729,9 @@ public: } else { - llwarns << "DiscardAgentOffer unable to find: " + LL_WARNS("Messaging") << "DiscardAgentOffer unable to find: " << (trash_id.isNull() ? "trash " : "") - << (mObjectID.isNull() ? "object" : "") << llendl; + << (mObjectID.isNull() ? "object" : "") << LL_ENDL; } gInventory.removeObserver(this); if(notify) @@ -766,14 +766,14 @@ bool check_offer_throttle(const std::string& from_name, bool check_only) if(gThrottleTimer.checkExpirationAndReset(OFFER_THROTTLE_TIME)) { - //llinfos << "Throttle Expired" << llendl; + LL_DEBUGS("Messaging") << "Throttle Expired" << LL_ENDL; throttle_count=1; throttle_logged=false; return true; } else //has not expired { - //llinfos << "Throttle Not Expired, Count: " << throttle_count << llendl; + LL_DEBUGS("Messaging") << "Throttle Not Expired, Count: " << throttle_count << LL_ENDL; // When downloading the initial inventory we get a lot of new items // coming in and can't tell that from spam. JC if (LLStartUp::getStartupState() >= STATE_STARTED @@ -821,7 +821,7 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) item = gInventory.getItem(*it); if(!item) { - llwarns << "Unable to show inventory item: " << *it << llendl; + LL_WARNS("Messaging") << "Unable to show inventory item: " << *it << LL_ENDL; continue; } if(gInventory.isObjectDescendentOf(*it, trash_id)) @@ -880,7 +880,7 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) //don't dick with highlight while the user is working //if(inventory_has_focus && !user_is_away) // break; - //llinfos << "Highlighting" << item->getUUID() << llendl; + LL_DEBUGS("Messaging") << "Highlighting" << item->getUUID() << LL_ENDL; //highlight item LLUICtrl* focus_ctrl = gFocusMgr.getKeyboardFocus(); @@ -1041,8 +1041,8 @@ void inventory_offer_callback(S32 button, void* user_data) } // we will want to open this item when it comes back. - lldebugs << "Initializing an opener for tid: " << info->mTransactionID - << llendl; + LL_DEBUGS("Messaging") << "Initializing an opener for tid: " << info->mTransactionID + << LL_ENDL; switch (info->mIM) { case IM_INVENTORY_OFFERED: @@ -1075,7 +1075,7 @@ void inventory_offer_callback(S32 button, void* user_data) } break; default: - llwarns << "inventory_offer_callback: unknown offer type" << llendl; + LL_WARNS("Messaging") << "inventory_offer_callback: unknown offer type" << LL_ENDL; break; } // end switch (info->mIM) break; @@ -1187,11 +1187,11 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) } else { - llwarns << "LLAssetType::lookupHumanReadable() returned NULL - probably bad asset type: " << info->mType << llendl; + LL_WARNS("Messaging") << "LLAssetType::lookupHumanReadable() returned NULL - probably bad asset type: " << info->mType << LL_ENDL; args["[OBJECTTYPE]"] = ""; // This seems safest, rather than propagating bogosity - llwarns << "Forcing an inventory-decline for probably-bad asset type." << llendl; + LL_WARNS("Messaging") << "Forcing an inventory-decline for probably-bad asset type." << LL_ENDL; inventory_offer_callback(IOR_DECLINE, info); return; } @@ -1424,7 +1424,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) snprintf(buffer, sizeof(buffer), "%s%s", separator_string, (message+message_offset)); /* Flawfinder: ignore */ - llinfos << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << llendl; + LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; // add to IM panel, but do not bother the user gIMMgr->addMessage( @@ -1480,7 +1480,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } snprintf(buffer, sizeof(buffer), "%s%s%s", separator_string, saved,(message+message_offset)); /* Flawfinder: ignore */ - llinfos << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << llendl; + LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; if (!is_muted || is_linden) { @@ -1538,7 +1538,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_GROUP_NOTICE: case IM_GROUP_NOTICE_REQUESTED: { - llinfos << "Received IM_GROUP_NOTICE message." << llendl; + LL_INFOS("Messaging") << "Received IM_GROUP_NOTICE message." << LL_ENDL; // Read the binary bucket for more information. struct notice_bucket_header_t { @@ -1557,7 +1557,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if ( (binary_bucket_size < (S32)((sizeof(notice_bucket_header_t) + sizeof(U8)))) || (binary_bucket[binary_bucket_size - 1] != '\0') ) { - llwarns << "Malformed group notice binary bucket" << llendl; + LL_WARNS("Messaging") << "Malformed group notice binary bucket" << LL_ENDL; break; } @@ -1623,7 +1623,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } else { - llinfos << "Received IM_GROUP_INVITATION message." << llendl; + LL_INFOS("Messaging") << "Received IM_GROUP_INVITATION message." << LL_ENDL; // Read the binary bucket for more information. struct invite_bucket_t { @@ -1634,7 +1634,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Make sure the binary bucket is the correct size. if (binary_bucket_size != sizeof(invite_bucket_t)) { - llwarns << "Malformed group invite binary bucket" << llendl; + LL_WARNS("Messaging") << "Malformed group invite binary bucket" << LL_ENDL; break; } @@ -1673,7 +1673,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (sizeof(offer_agent_bucket_t) != binary_bucket_size) { - llwarns << "Malformed inventory offer from agent" << llendl; + LL_WARNS("Messaging") << "Malformed inventory offer from agent" << LL_ENDL; break; } bucketp = (struct offer_agent_bucket_t*) &binary_bucket[0]; @@ -1684,7 +1684,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) { if (sizeof(S8) != binary_bucket_size) { - llwarns << "Malformed inventory offer from object" << llendl; + LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL; break; } info->mType = (LLAssetType::EType) binary_bucket[0]; @@ -1745,7 +1745,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_GROUP_ELECTION_DEPRECATED: { - llwarns << "Received IM: IM_GROUP_ELECTION_DEPRECATED" << llendl; + LL_WARNS("Messaging") << "Received IM: IM_GROUP_ELECTION_DEPRECATED" << LL_ENDL; } break; @@ -1825,7 +1825,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_BUSY_AUTO_RESPONSE: if (is_muted) { - lldebugs << "Ignoring busy response from " << from_id << llendl; + LL_DEBUGS("Messaging") << "Ignoring busy response from " << from_id << LL_ENDL; return; } else @@ -1873,16 +1873,16 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // URLs sent by scripts (i.e. llLoadURL) if (binary_bucket_size <= 0) { - llwarns << "bad binary_bucket_size: " + LL_WARNS("Messaging") << "bad binary_bucket_size: " << binary_bucket_size - << " - aborting function." << llendl; + << " - aborting function." << LL_ENDL; return; } char* url = new char[binary_bucket_size]; if (url == NULL) { - llerrs << "Memory Allocation failed" << llendl; + LL_ERRS("Messaging") << "Memory Allocation failed" << LL_ENDL; return; } @@ -1943,8 +1943,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; default: - llwarns << "Instant message calling for unknown dialog " - << (S32)dialog << llendl; + LL_WARNS("Messaging") << "Instant message calling for unknown dialog " + << (S32)dialog << LL_ENDL; break; } @@ -2072,7 +2072,7 @@ void callingcard_offer_callback(S32 option, void* user_data) void process_offer_callingcard(LLMessageSystem* msg, void**) { // someone has offered to form a friendship - lldebugs << "callingcard offer" << llendl; + LL_DEBUGS("Messaging") << "callingcard offer" << LL_ENDL; LLUUID source_id; msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, source_id); @@ -2117,7 +2117,7 @@ void process_offer_callingcard(LLMessageSystem* msg, void**) } else { - llwarns << "Calling card offer from an unknown source." << llendl; + LL_WARNS("Messaging") << "Calling card offer from an unknown source." << LL_ENDL; } delete offerdata; // !=NULL if we didn't give ownership away @@ -2310,10 +2310,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) break; case CHAT_TYPE_START: case CHAT_TYPE_STOP: - llwarns << "Got chat type start/stop in main chat processing." << llendl; + LL_WARNS("Messaging") << "Got chat type start/stop in main chat processing." << LL_ENDL; break; default: - llwarns << "Unknown type " << chat.mChatType << " in chat!" << llendl; + LL_WARNS("Messaging") << "Unknown type " << chat.mChatType << " in chat!" << LL_ENDL; verb = " say, "; break; } @@ -2406,7 +2406,7 @@ void process_teleport_progress(LLMessageSystem* msg, void**) if((gAgent.getID() != agent_id) || (gAgent.getTeleportState() == LLAgent::TELEPORT_NONE)) { - llwarns << "Unexpected teleport progress message." << llendl; + LL_WARNS("Messaging") << "Unexpected teleport progress message." << LL_ENDL; return; } U32 teleport_flags = 0x0; @@ -2421,7 +2421,7 @@ void process_teleport_progress(LLMessageSystem* msg, void**) } char buffer[MAX_STRING]; /* Flawfinder: ignore */ msg->getString("Info", "Message", MAX_STRING, buffer); - lldebugs << "teleport progress: " << buffer << llendl; + LL_DEBUGS("Messaging") << "teleport progress: " << buffer << LL_ENDL; //Sorta hacky...default to using simulator raw messages //if we don't find the coresponding mapping in our progress mappings @@ -2545,12 +2545,12 @@ BOOL LLPostTeleportNotifiers::tick() // We're going to pretend to be a new agent void process_teleport_finish(LLMessageSystem* msg, void**) { - //llinfos << "Got teleport location message" << llendl; + LL_DEBUGS("Messaging") << "Got teleport location message" << LL_ENDL; LLUUID agent_id; msg->getUUIDFast(_PREHASH_Info, _PREHASH_AgentID, agent_id); if (agent_id != gAgent.getID()) { - llwarns << "Got teleport notification for wrong agent!" << llendl; + LL_WARNS("Messaging") << "Got teleport notification for wrong agent!" << LL_ENDL; return; } @@ -2618,8 +2618,8 @@ void process_teleport_finish(LLMessageSystem* msg, void**) */ // now, use the circuit info to tell simulator about us! - llinfos << "process_teleport_finish() Enabling " - << sim_host << " with code " << msg->mOurCircuitCode << llendl; + LL_INFOS("Messaging") << "process_teleport_finish() Enabling " + << sim_host << " with code " << msg->mOurCircuitCode << LL_ENDL; msg->newMessageFast(_PREHASH_UseCircuitCode); msg->nextBlockFast(_PREHASH_CircuitCode); msg->addU32Fast(_PREHASH_Code, msg->getOurCircuitCode()); @@ -2680,12 +2680,12 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_SessionID, session_id); if((gAgent.getID() != agent_id) || (gAgent.getSessionID() != session_id)) { - llwarns << "Incorrect id in process_agent_movement_complete()" - << llendl; + LL_WARNS("Messaging") << "Incorrect id in process_agent_movement_complete()" + << LL_ENDL; return; } - llinfos << "process_agent_movement_complete()" << llendl; + LL_DEBUGS("Messaging") << "process_agent_movement_complete()" << LL_ENDL; // *TODO: check timestamp to make sure the movement compleation // makes sense. @@ -2704,7 +2704,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) { // Could happen if you were immediately god-teleported away on login, // maybe other cases. Continue, but warn. JC - llwarns << "agent_movement_complete() with NULL avatarp." << llendl; + LL_WARNS("Messaging") << "agent_movement_complete() with NULL avatarp." << LL_ENDL; } F32 x, y; @@ -2714,19 +2714,19 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) { if (gAgent.getRegion()) { - llwarns << "current region " << gAgent.getRegion()->getOriginGlobal() << llendl; + LL_WARNS("Messaging") << "current region " << gAgent.getRegion()->getOriginGlobal() << LL_ENDL; } - llwarns << "Agent being sent to invalid home region: " + LL_WARNS("Messaging") << "Agent being sent to invalid home region: " << x << ":" << y << " current pos " << gAgent.getPositionGlobal() - << llendl; + << LL_ENDL; LLAppViewer::instance()->forceDisconnect("You were sent to an invalid region."); return; } - llinfos << "Changing home region to " << x << ":" << y << llendl; + LL_INFOS("Messaging") << "Changing home region to " << x << ":" << y << LL_ENDL; // set our upstream host the new simulator and shuffle things as // appropriate. @@ -2846,11 +2846,11 @@ void process_crossed_region(LLMessageSystem* msg, void**) msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_SessionID, session_id); if((gAgent.getID() != agent_id) || (gAgent.getSessionID() != session_id)) { - llwarns << "Incorrect id in process_crossed_region()" - << llendl; + LL_WARNS("Messaging") << "Incorrect id in process_crossed_region()" + << LL_ENDL; return; } - llinfos << "process_crossed_region()" << llendl; + LL_INFOS("Messaging") << "process_crossed_region()" << LL_ENDL; U32 sim_ip; msg->getIPAddrFast(_PREHASH_RegionData, _PREHASH_SimIP, sim_ip); @@ -2978,24 +2978,24 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) /* if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) { - //llinfos << "head rot " << head_rotation << llendl; - llinfos << "head_rot_chg = " << head_rot_chg << llendl; + //LL_INFOS("Messaging") << "head rot " << head_rotation << LL_ENDL; + LL_INFOS("Messaging") << "head_rot_chg = " << head_rot_chg << LL_ENDL; } if (cam_rot_chg.magVec() > ROTATION_THRESHOLD) { - llinfos << "cam rot " << cam_rot_chg.magVec() << llendl; + LL_INFOS("Messaging") << "cam rot " << cam_rot_chg.magVec() << LL_ENDL; } if (cam_center_chg.magVec() > TRANSLATE_THRESHOLD) { - llinfos << "cam center " << cam_center_chg.magVec() << llendl; + LL_INFOS("Messaging") << "cam center " << cam_center_chg.magVec() << LL_ENDL; } // if (drag_delta_chg.magVec() > TRANSLATE_THRESHOLD) // { -// llinfos << "drag delta " << drag_delta_chg.magVec() << llendl; +// LL_INFOS("Messaging") << "drag delta " << drag_delta_chg.magVec() << LL_ENDL; // } if (control_flag_change) { - llinfos << "dcf = " << control_flag_change << llendl; + LL_INFOS("Messaging") << "dcf = " << control_flag_change << LL_ENDL; } */ @@ -3044,7 +3044,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) // if (camera_pos_agent.mV[VY] > 255.f) // { -// llinfos << "Sending camera center " << camera_pos_agent << llendl; +// LL_INFOS("Messaging") << "Sending camera center " << camera_pos_agent << LL_ENDL; // } msg->addVector3Fast(_PREHASH_CameraCenter, camera_pos_agent); @@ -3059,12 +3059,12 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) { if (control_flags & AGENT_CONTROL_LBUTTON_DOWN) { - llinfos << "AgentUpdate left button down" << llendl; + LL_INFOS("Messaging") << "AgentUpdate left button down" << LL_ENDL; } if (control_flags & AGENT_CONTROL_LBUTTON_UP) { - llinfos << "AgentUpdate left button up" << llendl; + LL_INFOS("Messaging") << "AgentUpdate left button up" << LL_ENDL; } } @@ -3079,7 +3079,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) gAgent.sendReliableMessage(); } - //llinfos << "agent " << avatar_pos_agent << " cam " << camera_pos_agent << llendl; +// LL_DEBUGS("Messaging") << "agent " << avatar_pos_agent << " cam " << camera_pos_agent << LL_ENDL; // Copy the old data last_head_rot = head_rotation; @@ -3192,13 +3192,13 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data) gMessageSystem->getSenderPort()); if (id == LLUUID::null) { - //llinfos << "Unknown kill for local " << local_id << llendl; + LL_DEBUGS("Messaging") << "Unknown kill for local " << local_id << LL_ENDL; gObjectList.mNumUnknownKills++; continue; } else { - //llinfos << "Kill message for local " << local_id << llendl; + LL_DEBUGS("Messaging") << "Kill message for local " << local_id << LL_ENDL; } LLSelectMgr::getInstance()->removeObjectFromSelections(id); @@ -3228,7 +3228,7 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data) } else { - llwarns << "Object in UUID lookup, but not on object list in kill!" << llendl; + LL_WARNS("Messaging") << "Object in UUID lookup, but not on object list in kill!" << LL_ENDL; gObjectList.mNumUnknownKills++; } } @@ -3257,8 +3257,8 @@ void process_time_synch(LLMessageSystem *mesgsys, void **user_data) LLWorld::getInstance()->setSpaceTimeUSec(space_time_usec); - //lldebugs << "time_synch() - " << sun_direction << ", " << sun_ang_velocity - // << ", " << phase << llendl; + //LL_DEBUGS("Messaging") << "time_synch() - " << sun_direction << ", " << sun_ang_velocity + // << ", " << phase << LL_ENDL; gSky.setSunPhase(phase); gSky.setSunTargetDirection(sun_direction, sun_ang_velocity); @@ -3510,7 +3510,8 @@ void process_sim_stats(LLMessageSystem *msg, void **user_data) LLViewerStats::getInstance()->mPhysicsMemoryAllocated.addValue(stat_value); break; default: -// llwarns << "Unknown stat id" << stat_id << llendl; + // Used to be a commented out warning. + LL_DEBUGS("Messaging") << "Unknown stat id" << stat_id << LL_ENDL; break; } } @@ -3577,7 +3578,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) if (!avatarp) { // no agent by this ID...error? - llwarns << "Received animation state for unknown avatar" << uuid << llendl; + LL_WARNS("Messaging") << "Received animation state for unknown avatar" << uuid << LL_ENDL; return; } @@ -3595,7 +3596,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); - //llinfos << "Anim sequence ID: " << anim_sequence_id << llendl; + LL_DEBUGS("Messaging") << "Anim sequence ID: " << anim_sequence_id << LL_ENDL; avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; @@ -3655,7 +3656,7 @@ void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data) } else { - llwarns << "avatar_appearance sent for unknown avatar " << uuid << llendl; + LL_WARNS("Messaging") << "avatar_appearance sent for unknown avatar " << uuid << LL_ENDL; } } @@ -3721,7 +3722,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data) } else { - llwarns << "Received sit approval for unknown object " << sitObjectID << llendl; + LL_WARNS("Messaging") << "Received sit approval for unknown object " << sitObjectID << LL_ENDL; } } @@ -3871,13 +3872,13 @@ void process_name_value(LLMessageSystem *mesgsys, void **user_data) for (i = 0; i < num_blocks; i++) { mesgsys->getStringFast(_PREHASH_NameValueData, _PREHASH_NVPair, NAME_VALUE_BUF_SIZE, temp_str, i); - llinfos << "Added to object Name Value: " << temp_str << llendl; + LL_INFOS("Messaging") << "Added to object Name Value: " << temp_str << LL_ENDL; object->addNVPair(temp_str); } } else { - llinfos << "Can't find object " << id << " to add name value pair" << llendl; + LL_INFOS("Messaging") << "Can't find object " << id << " to add name value pair" << LL_ENDL; } } @@ -3897,13 +3898,13 @@ void process_remove_name_value(LLMessageSystem *mesgsys, void **user_data) for (i = 0; i < num_blocks; i++) { mesgsys->getStringFast(_PREHASH_NameValueData, _PREHASH_NVPair, NAME_VALUE_BUF_SIZE, temp_str, i); - llinfos << "Removed from object Name Value: " << temp_str << llendl; + LL_INFOS("Messaging") << "Removed from object Name Value: " << temp_str << LL_ENDL; object->removeNVPair(temp_str); } } else { - llinfos << "Can't find object " << id << " to remove name value pair" << llendl; + LL_INFOS("Messaging") << "Can't find object " << id << " to remove name value pair" << LL_ENDL; } } @@ -3983,8 +3984,8 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) msg->getS32("MoneyData", "SquareMetersCredit", credit); msg->getS32("MoneyData", "SquareMetersCommitted", committed); msg->getStringFast(_PREHASH_MoneyData, _PREHASH_Description, STD_STRING_BUF_SIZE, desc); - llinfos << "L$, credit, committed: " << balance << " " << credit << " " - << committed << llendl; + LL_INFOS("Messaging") << "L$, credit, committed: " << balance << " " << credit << " " + << committed << LL_ENDL; if (gStatusBar) { @@ -4028,10 +4029,10 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) const S32 POP_FRONT_SIZE = 12; if(recent.size() > MAX_LOOKBACK) { - lldebugs << "Removing oldest transaction records" << llendl; + LL_DEBUGS("Messaging") << "Removing oldest transaction records" << LL_ENDL; recent.erase(recent.begin(), recent.begin() + POP_FRONT_SIZE); } - //lldebugs << "Pushing back transaction " << tid << llendl; + //LL_DEBUGS("Messaging") << "Pushing back transaction " << tid << LL_ENDL; recent.push_back(tid); } } @@ -4476,9 +4477,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data) switch (question_throttle.noteAction(throttle_owner_name)) { case LLStringThrottle::THROTTLE_NEWLY_BLOCKED: - llinfos << "process_script_question throttled" + LL_INFOS("Messaging") << "process_script_question throttled" << " owner_name:" << owner_name - << llendl; + << LL_ENDL; // Fall through case LLStringThrottle::THROTTLE_BLOCKED: @@ -4540,7 +4541,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data) void process_derez_container(LLMessageSystem *msg, void**) { - llwarns << "call to deprecated process_derez_container" << llendl; + LL_WARNS("Messaging") << "call to deprecated process_derez_container" << LL_ENDL; } void container_inventory_arrived(LLViewerObject* object, @@ -4548,7 +4549,7 @@ void container_inventory_arrived(LLViewerObject* object, S32 serial_num, void* data) { - llinfos << "container_inventory_arrived()" << llendl; + LL_DEBUGS("Messaging") << "container_inventory_arrived()" << LL_ENDL; if( gAgent.cameraMouselook() ) { gAgent.changeCameraToDefault(); @@ -4694,7 +4695,7 @@ void process_teleport_local(LLMessageSystem *msg,void**) msg->getUUIDFast(_PREHASH_Info, _PREHASH_AgentID, agent_id); if (agent_id != gAgent.getID()) { - llwarns << "Got teleport notification for wrong agent!" << llendl; + LL_WARNS("Messaging") << "Got teleport notification for wrong agent!" << LL_ENDL; return; } @@ -4924,8 +4925,8 @@ void process_user_info_reply(LLMessageSystem* msg, void**) msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); if(agent_id != gAgent.getID()) { - llwarns << "process_user_info_reply - " - << "wrong agent id." << llendl; + LL_WARNS("Messaging") << "process_user_info_reply - " + << "wrong agent id." << LL_ENDL; } BOOL im_via_email; @@ -5133,7 +5134,7 @@ void process_load_url(LLMessageSystem* msg, void**) if (LLMuteList::getInstance()->isMuted(infop->mObjectID, infop->mObjectName) || LLMuteList::getInstance()->isMuted(infop->mOwnerID)) { - llinfos<<"Ignoring load_url from muted object/owner."<<llendl; + LL_INFOS("Messaging")<<"Ignoring load_url from muted object/owner."<<LL_ENDL; delete infop; infop = NULL; return; @@ -5162,7 +5163,7 @@ void process_initiate_download(LLMessageSystem* msg, void**) msg->getUUID("AgentData", "AgentID", agent_id); if (agent_id != gAgent.getID()) { - llwarns << "Initiate download for wrong agent" << llendl; + LL_WARNS("Messaging") << "Initiate download for wrong agent" << LL_ENDL; return; } @@ -5288,7 +5289,7 @@ void onCovenantLoadComplete(LLVFS *vfs, LLAssetType::EType type, void* user_data, S32 status, LLExtStat ext_status) { - llinfos << "onCovenantLoadComplete()" << llendl; + LL_DEBUGS("Messaging") << "onCovenantLoadComplete()" << LL_ENDL; std::string covenant_text; if(0 == status) { @@ -5299,7 +5300,7 @@ void onCovenantLoadComplete(LLVFS *vfs, char* buffer = new char[file_length+1]; if (buffer == NULL) { - llerrs << "Memory Allocation failed" << llendl; + LL_ERRS("Messaging") << "Memory Allocation failed" << LL_ENDL; return; } @@ -5316,7 +5317,7 @@ void onCovenantLoadComplete(LLVFS *vfs, file_length+1); if( !editor->importBuffer( buffer ) ) { - llwarns << "Problem importing estate covenant." << llendl; + LL_WARNS("Messaging") << "Problem importing estate covenant." << LL_ENDL; covenant_text = "Problem importing estate covenant."; } else @@ -5329,7 +5330,7 @@ void onCovenantLoadComplete(LLVFS *vfs, } else { - llwarns << "Problem importing estate covenant: Covenant file format error." << llendl; + LL_WARNS("Messaging") << "Problem importing estate covenant: Covenant file format error." << LL_ENDL; covenant_text = "Problem importing estate covenant: Covenant file format error."; } } @@ -5351,7 +5352,7 @@ void onCovenantLoadComplete(LLVFS *vfs, covenant_text = "Unable to load estate covenant at this time."; } - llwarns << "Problem loading notecard: " << status << llendl; + LL_WARNS("Messaging") << "Problem loading notecard: " << status << LL_ENDL; } LLPanelEstateCovenant::updateCovenantText(covenant_text, asset_uuid); LLPanelLandCovenant::updateCovenantText(covenant_text); @@ -5369,7 +5370,7 @@ void process_feature_disabled_message(LLMessageSystem* msg, void**) msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_AgentID,agentID); msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_TransactionID,transactionID); - llwarns << "Blacklisted Feature Response:" << &messageText[0] << llendl; + LL_WARNS("Messaging") << "Blacklisted Feature Response:" << &messageText[0] << LL_ENDL; } // ------------------------------------------------------------ diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 5d7bac7ab3..d3b7a77297 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1307,6 +1307,7 @@ void LLViewerRegion::unpackRegionHandshake() class BaseCapabilitiesComplete : public LLHTTPClient::Responder { + LOG_CLASS(BaseCapabilitiesComplete); public: BaseCapabilitiesComplete(LLViewerRegion* region) : mRegion(region) @@ -1314,8 +1315,7 @@ public: void error(U32 statusNum, const std::string& reason) { - llinfos << "BaseCapabilitiesComplete::error " - << statusNum << ": " << reason << llendl; + LL_WARNS2("AppInit", "Capabilities") << statusNum << ": " << reason << LL_ENDL; if (STATE_SEED_GRANTED_WAIT == LLStartUp::getStartupState()) { @@ -1329,8 +1329,8 @@ public: for(iter = content.beginMap(); iter != content.endMap(); ++iter) { mRegion->setCapability(iter->first, iter->second); - llinfos << "BaseCapabilitiesComplete::result got capability for " - << iter->first << llendl; + LL_DEBUGS2("AppInit", "Capabilities") << "got capability for " + << iter->first << LL_ENDL; /* HACK we're waiting for the ServerReleaseNotes */ if ((iter->first == "ServerReleaseNotes") && (LLFloaterReleaseMsg::sDisplayMessage)) diff --git a/indra/newview/llviewerthrottle.cpp b/indra/newview/llviewerthrottle.cpp index 9a9fcdd9ac..c23a74c533 100644 --- a/indra/newview/llviewerthrottle.cpp +++ b/indra/newview/llviewerthrottle.cpp @@ -182,9 +182,9 @@ void LLViewerThrottleGroup::dump() S32 i; for (i = 0; i < TC_EOF; i++) { - llinfos << LLViewerThrottle::sNames[i] << ": " << mThrottles[i] << llendl; + LL_DEBUGS("Throttle") << LLViewerThrottle::sNames[i] << ": " << mThrottles[i] << LL_ENDL; } - llinfos << "Total: " << mThrottleTotal << llendl; + LL_DEBUGS("Throttle") << "Total: " << mThrottleTotal << LL_ENDL; } class LLBPSListener : public LLSimpleListener diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 0e39c9d5d4..5d3487517b 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1529,9 +1529,9 @@ LLViewerWindow::LLViewerWindow( ignore_pixel_depth, gSavedSettings.getU32("RenderFSAASamples")); #if LL_WINDOWS - if (!LLWinDebug::setupExceptionHandler()) + if (!LLWinDebug::checkExceptionHandler()) { - llwarns << " Someone took over my exception handler (post createWindow)!" << llendl; + LL_WARNS("Window") << " Someone took over my exception handler (post createWindow)!" << LL_ENDL; } #endif @@ -1542,8 +1542,8 @@ LLViewerWindow::LLViewerWindow( llwarns << "Unable to create window, be sure screen is set at 32-bit color and your graphics driver is configured correctly. See README-linux.txt or README-solaris.txt for further information." << llendl; #else - llwarns << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings" - << llendl; + LL_WARNS("Window") << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings" + << LL_ENDL; #endif LLAppViewer::instance()->forceExit(1); } @@ -1569,7 +1569,7 @@ LLViewerWindow::LLViewerWindow( // We want to set this stuff up BEFORE we initialize the pipeline, so we can turn off // stuff like AGP if we think that it'll crash the viewer. // - llinfos << "Loading feature tables." << llendl; + LL_DEBUGS("Window") << "Loading feature tables." << LL_ENDL; LLFeatureManager::getInstance()->init(); @@ -4939,7 +4939,7 @@ void LLViewerWindow::restoreGL(const LLString& progress_message) } llinfos << "...Restoring GL done" << llendl; #if LL_WINDOWS - if (SetUnhandledExceptionFilter(LLWinDebug::handleException) != LLWinDebug::handleException) + if(!LLWinDebug::checkExceptionHandler()) { llwarns << " Someone took over my exception handler (post restoreGL)!" << llendl; } diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index bba9fe1ccf..96f69e9472 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -268,7 +268,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl( } else { - llinfos << "parsing: " << mInput.substr(start, delim - start) << llendl; + LL_INFOS("Voice") << "parsing: " << mInput.substr(start, delim - start) << LL_ENDL; } } @@ -287,12 +287,12 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl( if(start != 0) mInput = mInput.substr(start); -// llinfos << "at end, mInput is: " << mInput << llendl; + LL_DEBUGS("Voice") << "at end, mInput is: " << mInput << LL_ENDL; if(!gVoiceClient->mConnected) { // If voice has been disabled, we just want to close the socket. This does so. - llinfos << "returning STATUS_STOP" << llendl; + LL_INFOS("Voice") << "returning STATUS_STOP" << LL_ENDL; return STATUS_STOP; } @@ -366,17 +366,17 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr) } } } - //llinfos << tag << " (" << responseDepth << ")" << llendl; + LL_DEBUGS("Voice") << tag << " (" << responseDepth << ")" << LL_ENDL; } else { if (ignoringTags) { - //llinfos << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << llendl; + LL_DEBUGS("Voice") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL; } else { - //llinfos << tag << " (" << responseDepth << ")" << llendl; + LL_DEBUGS("Voice") << tag << " (" << responseDepth << ")" << LL_ENDL; // Ignore the InputXml stuff so we don't get confused if (strcmp("InputXml", tag) == 0) @@ -385,7 +385,7 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr) ignoreDepth = responseDepth; accumulateText = false; - //llinfos << "starting ignore, ignoreDepth is " << ignoreDepth << llendl; + LL_DEBUGS("Voice") << "starting ignore, ignoreDepth is " << ignoreDepth << LL_ENDL; } else if (strcmp("CaptureDevices", tag) == 0) { @@ -413,18 +413,18 @@ void LLVivoxProtocolParser::EndTag(const char *tag) { if (ignoreDepth == responseDepth) { - //llinfos << "end of ignore" << llendl; + LL_DEBUGS("Voice") << "end of ignore" << LL_ENDL; ignoringTags = false; } else { - //llinfos << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << llendl; + LL_DEBUGS("Voice") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL; } } if (!ignoringTags) { - //llinfos << "processing tag " << tag << " (depth = " << responseDepth << ")" << llendl; + LL_DEBUGS("Voice") << "processing tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL; // Closing a tag. Finalize the text we've accumulated and reset if (strcmp("ReturnCode", tag) == 0) @@ -531,7 +531,7 @@ void LLVivoxProtocolParser::CharData(const char *buffer, int length) void LLVivoxProtocolParser::processResponse(std::string tag) { - //llinfos << tag << llendl; + LL_DEBUGS("Voice") << tag << LL_ENDL; if (isEvent) { @@ -700,9 +700,9 @@ private: void LLVoiceClientCapResponder::error(U32 status, const std::string& reason) { - llwarns << "LLVoiceClientCapResponder::error(" + LL_WARNS("Voice") << "LLVoiceClientCapResponder::error(" << status << ": " << reason << ")" - << llendl; + << LL_ENDL; } void LLVoiceClientCapResponder::result(const LLSD& content) @@ -710,8 +710,8 @@ void LLVoiceClientCapResponder::result(const LLSD& content) LLSD::map_const_iterator iter; for(iter = content.beginMap(); iter != content.endMap(); ++iter) { - llinfos << "LLVoiceClientCapResponder::result got " - << iter->first << llendl; + LL_DEBUGS("Voice") << "LLVoiceClientCapResponder::result got " + << iter->first << LL_ENDL; } if ( content.has("voice_credentials") ) @@ -918,7 +918,7 @@ bool LLVoiceClient::writeString(const std::string &str) apr_size_t size = (apr_size_t)str.size(); apr_size_t written = size; -// llinfos << "sending: " << str << llendl; + LL_DEBUGS("Voice") << "sending: " << str << LL_ENDL; // MBW -- XXX -- check return code - sockets will fail (broken, etc.) err = apr_socket_send( @@ -941,7 +941,7 @@ bool LLVoiceClient::writeString(const std::string &str) { // Assume any socket error means something bad. For now, just close the socket. char buf[MAX_STRING]; - llwarns << "apr error " << err << " ("<< apr_strerror(err, buf, MAX_STRING) << ") sending data to vivox daemon." << llendl; + LL_WARNS("Voice") << "apr error " << err << " ("<< apr_strerror(err, buf, MAX_STRING) << ") sending data to vivox daemon." << LL_ENDL; daemonDied(); } } @@ -965,7 +965,7 @@ void LLVoiceClient::connectorCreate() if(savedLogLevel != "-1") { - llinfos << "creating connector with logging enabled" << llendl; + LL_DEBUGS("Voice") << "creating connector with logging enabled" << LL_ENDL; loglevel = "10"; logpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ""); } @@ -1014,7 +1014,7 @@ void LLVoiceClient::userAuthorized(const std::string& firstName, const std::stri mAccountDisplayName += " "; mAccountDisplayName += lastName; - llinfos << "name \"" << mAccountDisplayName << "\" , ID " << agentID << llendl; + LL_INFOS("Voice") << "name \"" << mAccountDisplayName << "\" , ID " << agentID << LL_ENDL; std::string gridname = gGridName; LLString::toLower(gridname); @@ -1065,13 +1065,13 @@ void LLVoiceClient::login( if((getState() >= stateLoggingIn) && (getState() < stateLoggedOut)) { // Already logged in. This is an internal error. - llerrs << "called from wrong state." << llendl; + LL_ERRS("Voice") << "Can't login again. Called from wrong state." << LL_ENDL; } else if ( accountName != mAccountName ) { //TODO: error? - llinfos << "Wrong account name! " << accountName - << " instead of " << mAccountName << llendl; + LL_WARNS("Voice") << "Wrong account name! " << accountName + << " instead of " << mAccountName << LL_ENDL; } else { @@ -1167,7 +1167,7 @@ const char *LLVoiceClientStatusObserver::status2string(LLVoiceClientStatusObserv void LLVoiceClient::setState(state inState) { - llinfos << "entering state " << state2string(inState) << llendl; + LL_DEBUGS("Voice") << "entering state " << state2string(inState) << LL_ENDL; mState = inState; } @@ -1188,7 +1188,7 @@ void LLVoiceClient::stateMachine() if(!mConnected) { // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill. - llinfos << "Disabling voice before connection to daemon, terminating." << llendl; + LL_INFOS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL; killGateway(); } @@ -1213,7 +1213,7 @@ void LLVoiceClient::stateMachine() std::string regionName = region->getName(); std::string capURI = region->getCapability("ParcelVoiceInfoRequest"); -// llinfos << "Region name = \"" << regionName <<"\", " << "parcel local ID = " << parcelLocalID << llendl; + LL_DEBUGS("Voice") << "Region name = \"" << regionName <<"\", " << "parcel local ID = " << parcelLocalID << LL_ENDL; // The region name starts out empty and gets filled in later. // Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes. @@ -1277,7 +1277,7 @@ void LLVoiceClient::stateMachine() args += " -ll "; args += loglevel; -// llinfos << "Args for SLVoice: " << args << llendl; + LL_DEBUGS("Voice") << "Args for SLVoice: " << args << LL_ENDL; #if LL_WINDOWS PROCESS_INFORMATION pinfo; @@ -1349,7 +1349,7 @@ void LLVoiceClient::stateMachine() } else { - llinfos << exe_path << "not found." << llendl + LL_INFOS("Voice") << exe_path << "not found." << LL_ENDL } } else @@ -1376,7 +1376,7 @@ void LLVoiceClient::stateMachine() break; case stateDaemonLaunched: -// llinfos << "Connecting to vivox daemon" << llendl; + LL_DEBUGS("Voice") << "Connecting to vivox daemon" << LL_ENDL; if(mUpdateTimer.hasExpired()) { mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS); @@ -1533,7 +1533,7 @@ void LLVoiceClient::stateMachine() if(mTuningMicVolumeDirty) { - llinfos << "setting tuning mic level to " << mTuningMicVolume << llendl; + LL_INFOS("Voice") << "setting tuning mic level to " << mTuningMicVolume << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetMicLevel.1\">" << "<Level>" << mTuningMicVolume << "</Level>" @@ -1584,12 +1584,12 @@ void LLVoiceClient::stateMachine() if(mLoginRetryCount > MAX_LOGIN_RETRIES) { - llinfos << "too many login retries, giving up." << llendl; + LL_WARNS("Voice") << "too many login retries, giving up." << LL_ENDL; setState(stateLoginFailed); } else { - llinfos << "will retry login in " << LOGIN_RETRY_SECONDS << " seconds." << llendl; + LL_INFOS("Voice") << "will retry login in " << LOGIN_RETRY_SECONDS << " seconds." << LL_ENDL; mUpdateTimer.start(); mUpdateTimer.setTimerExpirySec(LOGIN_RETRY_SECONDS); setState(stateLoginRetryWait); @@ -1849,7 +1849,7 @@ void LLVoiceClient::stateMachine() case stateJoinSessionFailed: // Transition to error state. Send out any notifications here. - llwarns << "stateJoinSessionFailed: (" << mVivoxErrorStatusCode << "): " << mVivoxErrorStatusString << llendl; + LL_WARNS("Voice") << "stateJoinSessionFailed: (" << mVivoxErrorStatusCode << "): " << mVivoxErrorStatusString << LL_ENDL; notifyStatusObservers(LLVoiceClientStatusObserver::ERROR_UNKNOWN); setState(stateJoinSessionFailedWaiting); break; @@ -1869,8 +1869,7 @@ void LLVoiceClient::stateMachine() case stateMicTuningNoLogin: // *TODO: Implement me. - llwarns << "stateMicTuningNoLogin not handled" - << llendl; + LL_WARNS("Voice") << "stateMicTuningNoLogin not handled" << LL_ENDL; break; } @@ -1939,7 +1938,7 @@ void LLVoiceClient::channelGetListSendMessage() void LLVoiceClient::sessionCreateSendMessage() { - llinfos << "requesting join: " << mNextSessionURI << llendl; + LL_DEBUGS("Voice") << "requesting join: " << mNextSessionURI << LL_ENDL; mSessionURI = mNextSessionURI; mNonSpatialChannel = !mNextSessionSpatial; @@ -1979,7 +1978,7 @@ void LLVoiceClient::sessionCreateSendMessage() void LLVoiceClient::sessionConnectSendMessage() { - llinfos << "connecting to session handle: " << mNextSessionHandle << llendl; + LL_DEBUGS("Voice") << "connecting to session handle: " << mNextSessionHandle << LL_ENDL; mSessionHandle = mNextSessionHandle; mSessionURI = mNextP2PSessionURI; @@ -2008,7 +2007,7 @@ void LLVoiceClient::sessionTerminate() void LLVoiceClient::sessionTerminateSendMessage() { - llinfos << "leaving session: " << mSessionURI << llendl; + LL_DEBUGS("Voice") << "leaving session: " << mSessionURI << LL_ENDL; switch(getState()) { @@ -2027,7 +2026,7 @@ void LLVoiceClient::sessionTerminateSendMessage() } else { - llwarns << "called with no session handle" << llendl; + LL_WARNS("Voice") << "called with no session handle" << LL_ENDL; setState(stateSessionTerminated); } break; @@ -2037,14 +2036,14 @@ void LLVoiceClient::sessionTerminateSendMessage() break; default: - llwarns << "called from unknown state" << llendl; + LL_WARNS("Voice") << "called from unknown state" << LL_ENDL; break; } } void LLVoiceClient::sessionTerminateByHandle(std::string &sessionHandle) { - llinfos << "Sending Session.Terminate with handle " << sessionHandle << llendl; + LL_DEBUGS("Voice") << "Sending Session.Terminate with handle " << sessionHandle << LL_ENDL; std::ostringstream stream; stream @@ -2079,14 +2078,14 @@ void LLVoiceClient::getRenderDevicesSendMessage() void LLVoiceClient::clearCaptureDevices() { // MBW -- XXX -- do something here - llinfos << "called" << llendl; + LL_DEBUGS("Voice") << "called" << LL_ENDL; mCaptureDevices.clear(); } void LLVoiceClient::addCaptureDevice(const std::string& name) { // MBW -- XXX -- do something here - llinfos << name << llendl; + LL_DEBUGS("Voice") << name << LL_ENDL; mCaptureDevices.push_back(name); } @@ -2119,14 +2118,14 @@ void LLVoiceClient::setCaptureDevice(const std::string& name) void LLVoiceClient::clearRenderDevices() { // MBW -- XXX -- do something here - llinfos << "called" << llendl; + LL_DEBUGS("Voice") << "called" << LL_ENDL; mRenderDevices.clear(); } void LLVoiceClient::addRenderDevice(const std::string& name) { // MBW -- XXX -- do something here - llinfos << name << llendl; + LL_DEBUGS("Voice") << name << LL_ENDL; mRenderDevices.push_back(name); } @@ -2210,7 +2209,7 @@ void LLVoiceClient::tuningRenderStopSendMessage() void LLVoiceClient::tuningCaptureStartSendMessage(int duration) { - llinfos << "sending CaptureAudioStart" << llendl; + LL_DEBUGS("Voice") << "sending CaptureAudioStart" << LL_ENDL; std::ostringstream stream; stream @@ -2223,7 +2222,7 @@ void LLVoiceClient::tuningCaptureStartSendMessage(int duration) void LLVoiceClient::tuningCaptureStopSendMessage() { - llinfos << "sending CaptureAudioStop" << llendl; + LL_DEBUGS("Voice") << "sending CaptureAudioStop" << LL_ENDL; std::ostringstream stream; stream @@ -2296,7 +2295,7 @@ void LLVoiceClient::refreshDeviceLists(bool clearCurrentList) void LLVoiceClient::daemonDied() { // The daemon died, so the connection is gone. Reset everything and start over. - llwarns << "Connection to vivox daemon lost. Resetting state."<< llendl; + LL_WARNS("Voice") << "Connection to vivox daemon lost. Resetting state."<< LL_ENDL; closeSocket(); removeAllParticipants(); @@ -2332,7 +2331,7 @@ void LLVoiceClient::sendPositionalUpdate(void) u = mAvatarRot.getUpRow(); a = mAvatarRot.getFwdRow(); -// llinfos << "Sending speaker position " << mSpeakerPosition << llendl; + LL_DEBUGS("Voice") << "Sending speaker position " << mAvatarPosition << LL_ENDL; stream << "<Position>" @@ -2395,7 +2394,7 @@ void LLVoiceClient::sendPositionalUpdate(void) u = earRot.getUpRow(); a = earRot.getFwdRow(); -// llinfos << "Sending listener position " << mListenerPosition << llendl; + LL_DEBUGS("Voice") << "Sending listener position " << earPosition << LL_ENDL; stream << "<Position>" @@ -2435,7 +2434,7 @@ void LLVoiceClient::sendPositionalUpdate(void) // NOTE that the state of "PTT" is the inverse of "local mute". // (i.e. when PTT is true, we send a mute command with "false", and vice versa) -// llinfos << "Sending MuteLocalMic command with parameter " << (mPTT?"false":"true") << llendl; + LL_DEBUGS("Voice") << "Sending MuteLocalMic command with parameter " << (mPTT?"false":"true") << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Connector.MuteLocalMic.1\">" << "<ConnectorHandle>" << mConnectorHandle << "</ConnectorHandle>" @@ -2456,7 +2455,7 @@ void LLVoiceClient::sendPositionalUpdate(void) { int volume = p->mOnMuteList?0:p->mUserVolume; - llinfos << "Setting volume for avatar " << p->mAvatarID << " to " << volume << llendl; + LL_INFOS("Voice") << "Setting volume for avatar " << p->mAvatarID << " to " << volume << LL_ENDL; // Send a mute/unumte command for the user (actually "volume for me"). stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.SetParticipantVolumeForMe.1\">" @@ -2473,7 +2472,7 @@ void LLVoiceClient::sendPositionalUpdate(void) if(mSpeakerMuteDirty) { const char *muteval = ((mSpeakerVolume == -100)?"true":"false"); - llinfos << "Setting speaker mute to " << muteval << llendl; + LL_INFOS("Voice") << "Setting speaker mute to " << muteval << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Connector.MuteLocalSpeaker.1\">" << "<ConnectorHandle>" << mConnectorHandle << "</ConnectorHandle>" @@ -2483,7 +2482,7 @@ void LLVoiceClient::sendPositionalUpdate(void) if(mSpeakerVolumeDirty) { - llinfos << "Setting speaker volume to " << mSpeakerVolume << llendl; + LL_INFOS("Voice") << "Setting speaker volume to " << mSpeakerVolume << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Connector.SetLocalSpeakerVolume.1\">" << "<ConnectorHandle>" << mConnectorHandle << "</ConnectorHandle>" @@ -2493,7 +2492,7 @@ void LLVoiceClient::sendPositionalUpdate(void) if(mMicVolumeDirty) { - llinfos << "Setting mic volume to " << mMicVolume << llendl; + LL_INFOS("Voice") << "Setting mic volume to " << mMicVolume << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Connector.SetLocalMicVolume.1\">" << "<ConnectorHandle>" << mConnectorHandle << "</ConnectorHandle>" @@ -2530,7 +2529,7 @@ void LLVoiceClient::sendPositionalUpdate(void) void LLVoiceClient::buildSetCaptureDevice(std::ostringstream &stream) { - llinfos << "Setting input device = \"" << mCaptureDevice << "\"" << llendl; + LL_DEBUGS("Voice") << "Setting input device = \"" << mCaptureDevice << "\"" << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetCaptureDevice.1\">" @@ -2541,7 +2540,7 @@ void LLVoiceClient::buildSetCaptureDevice(std::ostringstream &stream) void LLVoiceClient::buildSetRenderDevice(std::ostringstream &stream) { - llinfos << "Setting output device = \"" << mRenderDevice << "\"" << llendl; + LL_DEBUGS("Voice") << "Setting output device = \"" << mRenderDevice << "\"" << LL_ENDL; stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetRenderDevice.1\">" @@ -2557,7 +2556,7 @@ void LLVoiceClient::connectorCreateResponse(int statusCode, std::string &statusS { if(statusCode != 0) { - llwarns << "Connector.Create response failure: " << statusString << llendl; + LL_WARNS("Voice") << "Connector.Create response failure: " << statusString << LL_ENDL; setState(stateConnectorFailed); } else @@ -2573,19 +2572,19 @@ void LLVoiceClient::connectorCreateResponse(int statusCode, std::string &statusS void LLVoiceClient::loginResponse(int statusCode, std::string &statusString, std::string &accountHandle) { - llinfos << "Account.Login response (" << statusCode << "): " << statusString << llendl; + LL_DEBUGS("Voice") << "Account.Login response (" << statusCode << "): " << statusString << LL_ENDL; // Status code of 20200 means "bad password". We may want to special-case that at some point. if ( statusCode == 401 ) { // Login failure which is probably caused by the delay after a user's password being updated. - llinfos << "Account.Login response failure (" << statusCode << "): " << statusString << llendl; + LL_INFOS("Voice") << "Account.Login response failure (" << statusCode << "): " << statusString << LL_ENDL; setState(stateLoginRetry); } else if(statusCode != 0) { - llwarns << "Account.Login response failure (" << statusCode << "): " << statusString << llendl; + LL_WARNS("Voice") << "Account.Login response failure (" << statusCode << "): " << statusString << LL_ENDL; setState(stateLoginFailed); } else @@ -2604,7 +2603,7 @@ void LLVoiceClient::channelGetListResponse(int statusCode, std::string &statusSt { if(statusCode != 0) { - llwarns << "Account.ChannelGetList response failure: " << statusString << llendl; + LL_WARNS("Voice") << "Account.ChannelGetList response failure: " << statusString << LL_ENDL; switchChannel(); } else @@ -2614,12 +2613,12 @@ void LLVoiceClient::channelGetListResponse(int statusCode, std::string &statusSt if(uri.empty()) { // Lookup failed, can't join a channel for this area. - llinfos << "failed to map channel name: " << mChannelName << llendl; + LL_INFOS("Voice") << "failed to map channel name: " << mChannelName << LL_ENDL; } else { // We have a sip URL for this area. - llinfos << "mapped channel " << mChannelName << " to URI "<< uri << llendl; + LL_INFOS("Voice") << "mapped channel " << mChannelName << " to URI "<< uri << LL_ENDL; } // switchChannel with an empty uri string will do the right thing (leave channel and not rejoin) @@ -2631,13 +2630,13 @@ void LLVoiceClient::sessionCreateResponse(int statusCode, std::string &statusStr { if(statusCode != 0) { - llwarns << "Session.Create response failure (" << statusCode << "): " << statusString << llendl; + LL_WARNS("Voice") << "Session.Create response failure (" << statusCode << "): " << statusString << LL_ENDL; // if(statusCode == 1015) // { // if(getState() == stateJoiningSession) // { // // this happened during a real join. Going to sessionTerminated should cause a retry in appropriate cases. -// llwarns << "session handle \"" << sessionHandle << "\", mSessionStateEventHandle \"" << mSessionStateEventHandle << "\""<< llendl; +// LL_WARNS("Voice") << "session handle \"" << sessionHandle << "\", mSessionStateEventHandle \"" << mSessionStateEventHandle << "\""<< LL_ENDL; // if(!sessionHandle.empty()) // { // // This session is bad. Terminate it. @@ -2659,7 +2658,7 @@ void LLVoiceClient::sessionCreateResponse(int statusCode, std::string &statusStr // else // { // // We didn't think we were in the middle of a join. Don't change state. -// llwarns << "Not in stateJoiningSession, ignoring" << llendl; +// LL_WARNS("Voice") << "Not in stateJoiningSession, ignoring" << LL_ENDL; // } // } // else @@ -2671,7 +2670,7 @@ void LLVoiceClient::sessionCreateResponse(int statusCode, std::string &statusStr } else { - llinfos << "Session.Create response received (success), session handle is " << sessionHandle << llendl; + LL_DEBUGS("Voice") << "Session.Create response received (success), session handle is " << sessionHandle << LL_ENDL; if(getState() == stateJoiningSession) { // This is also grabbed in the SessionStateChangeEvent handler, but it might be useful to have it early... @@ -2689,10 +2688,10 @@ void LLVoiceClient::sessionConnectResponse(int statusCode, std::string &statusSt { if(statusCode != 0) { - llwarns << "Session.Connect response failure (" << statusCode << "): " << statusString << llendl; + LL_WARNS("Voice") << "Session.Connect response failure (" << statusCode << "): " << statusString << LL_ENDL; // if(statusCode == 1015) // { -// llwarns << "terminating existing session" << llendl; +// LL_WARNS("Voice") << "terminating existing session" << LL_ENDL; // sessionTerminate(); // } // else @@ -2704,7 +2703,7 @@ void LLVoiceClient::sessionConnectResponse(int statusCode, std::string &statusSt } else { - llinfos << "Session.Connect response received (success)" << llendl; + LL_DEBUGS("Voice") << "Session.Connect response received (success)" << LL_ENDL; } } @@ -2712,7 +2711,7 @@ void LLVoiceClient::sessionTerminateResponse(int statusCode, std::string &status { if(statusCode != 0) { - llwarns << "Session.Terminate response failure: (" << statusCode << "): " << statusString << llendl; + LL_WARNS("Voice") << "Session.Terminate response failure: (" << statusCode << "): " << statusString << LL_ENDL; if(getState() == stateLeavingSession) { // This is probably "(404): Server reporting Failure. Not a member of this conference." @@ -2727,7 +2726,7 @@ void LLVoiceClient::logoutResponse(int statusCode, std::string &statusString) { if(statusCode != 0) { - llwarns << "Account.Logout response failure: " << statusString << llendl; + LL_WARNS("Voice") << "Account.Logout response failure: " << statusString << LL_ENDL; // MBW -- XXX -- Should this ever fail? do we care if it does? } @@ -2741,7 +2740,7 @@ void LLVoiceClient::connectorShutdownResponse(int statusCode, std::string &statu { if(statusCode != 0) { - llwarns << "Connector.InitiateShutdown response failure: " << statusString << llendl; + LL_WARNS("Voice") << "Connector.InitiateShutdown response failure: " << statusString << LL_ENDL; // MBW -- XXX -- Should this ever fail? do we care if it does? } @@ -2765,7 +2764,7 @@ void LLVoiceClient::sessionStateChangeEvent( switch(state) { case 4: // I see this when joining the session - llinfos << "joined session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << llendl; + LL_INFOS("Voice") << "joined session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << LL_ENDL; // Session create succeeded, move forward. mSessionStateEventHandle = sessionHandle; @@ -2778,23 +2777,23 @@ void LLVoiceClient::sessionStateChangeEvent( setState(stateSessionJoined); //RN: the uriString being returned by vivox here is actually your account uri, not the channel // you are attempting to join, so ignore it - //llinfos << "received URI " << uriString << "(previously " << mSessionURI << ")" << llendl; + //LL_DEBUGS("Voice") << "received URI " << uriString << "(previously " << mSessionURI << ")" << LL_ENDL; //mSessionURI = uriString; } } else if(sessionHandle == mNextSessionHandle) { -// llinfos << "received URI " << uriString << ", name " << nameString << " for next session (handle " << mNextSessionHandle << ")" << llendl; +// LL_DEBUGS("Voice") << "received URI " << uriString << ", name " << nameString << " for next session (handle " << mNextSessionHandle << ")" << LL_ENDL; } else { - llwarns << "joining unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << llendl; + LL_WARNS("Voice") << "joining unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << LL_ENDL; // MBW -- XXX -- Should we send a Session.Terminate here? } break; case 5: // I see this when leaving the session - llinfos << "left session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << llendl; + LL_INFOS("Voice") << "left session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << LL_ENDL; // Set the session handle to the empty string. If we get back to stateJoiningSession, we'll want to wait for the new session handle. if(sessionHandle == mSessionHandle) @@ -2822,17 +2821,17 @@ void LLVoiceClient::sessionStateChangeEvent( case stateJoinSessionFailed: case stateJoinSessionFailedWaiting: // normal transition - llinfos << "left session " << sessionHandle << "in state " << state2string(getState()) << llendl; + LL_INFOS("Voice") << "left session " << sessionHandle << "in state " << state2string(getState()) << LL_ENDL; setState(stateSessionTerminated); break; case stateSessionTerminated: // this will happen sometimes -- there are cases where we send the terminate and then go straight to this state. - llwarns << "left session " << sessionHandle << "in state " << state2string(getState()) << llendl; + LL_WARNS("Voice") << "left session " << sessionHandle << "in state " << state2string(getState()) << LL_ENDL; break; default: - llwarns << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << llendl; + LL_WARNS("Voice") << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << LL_ENDL; setState(stateSessionTerminated); break; } @@ -2843,14 +2842,14 @@ void LLVoiceClient::sessionStateChangeEvent( } else { - llinfos << "leaving unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << llendl; + LL_INFOS("Voice") << "leaving unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << LL_ENDL; } mSessionStateEventHandle.clear(); mSessionStateEventURI.clear(); break; default: - llwarns << "unknown state: " << state << llendl; + LL_WARNS("Voice") << "unknown state: " << state << LL_ENDL; break; } } @@ -2861,7 +2860,7 @@ void LLVoiceClient::loginStateChangeEvent( std::string &statusString, int state) { - llinfos << "state is " << state << llendl; + LL_DEBUGS("Voice") << "state is " << state << LL_ENDL; /* According to Mike S., status codes for this event are: login_state_logged_out=0, @@ -2882,7 +2881,8 @@ void LLVoiceClient::loginStateChangeEvent( break; default: -// llwarns << "unknown state: " << state << llendl; + //Used to be a commented out warning + LL_DEBUGS("Voice") << "unknown state: " << state << LL_ENDL; break; } } @@ -2894,13 +2894,13 @@ void LLVoiceClient::sessionNewEvent( std::string &nameString, std::string &uriString) { -// llinfos << "state is " << state << llendl; + LL_DEBUGS("Voice") << "state is " << state << LL_ENDL; switch(state) { case 0: { - llinfos << "session handle = " << eventSessionHandle << ", name = " << nameString << ", uri = " << uriString << llendl; + LL_DEBUGS("Voice") << "session handle = " << eventSessionHandle << ", name = " << nameString << ", uri = " << uriString << LL_ENDL; LLUUID caller_id; if(IDFromName(nameString, caller_id)) @@ -2918,13 +2918,13 @@ void LLVoiceClient::sessionNewEvent( } else { - llwarns << "Could not generate caller id from uri " << uriString << llendl; + LL_WARNS("Voice") << "Could not generate caller id from uri " << uriString << LL_ENDL; } } break; default: - llwarns << "unknown state: " << state << llendl; + LL_WARNS("Voice") << "unknown state: " << state << LL_ENDL; break; } } @@ -2939,7 +2939,7 @@ void LLVoiceClient::participantStateChangeEvent( int participantType) { participantState *participant = NULL; - llinfos << "state is " << state << llendl; + LL_DEBUGS("Voice") << "state is " << state << LL_ENDL; switch(state) { @@ -2948,8 +2948,8 @@ void LLVoiceClient::participantStateChangeEvent( if(participant) { participant->mName = nameString; - llinfos << "added participant \"" << participant->mName - << "\" (" << participant->mAvatarID << ")"<< llendl; + LL_DEBUGS("Voice") << "added participant \"" << participant->mName + << "\" (" << participant->mAvatarID << ")"<< LL_ENDL; } break; case 9: // I see this when a participant leaves @@ -2960,7 +2960,7 @@ void LLVoiceClient::participantStateChangeEvent( } break; default: -// llwarns << "unknown state: " << state << llendl; + LL_DEBUGS("Voice") << "unknown state: " << state << LL_ENDL; break; } } @@ -2990,13 +2990,13 @@ void LLVoiceClient::participantPropertiesEvent( } else { - llwarns << "unknown participant: " << uriString << llendl; + LL_WARNS("Voice") << "unknown participant: " << uriString << LL_ENDL; } } void LLVoiceClient::auxAudioPropertiesEvent(F32 energy) { -// llinfos << "got energy " << energy << llendl; + LL_DEBUGS("Voice") << "got energy " << energy << LL_ENDL; mTuningEnergy = energy; } @@ -3054,7 +3054,7 @@ LLVoiceClient::participantState *LLVoiceClient::addParticipant(const std::string } } - llinfos << "participant \"" << result->mURI << "\" added." << llendl; + LL_DEBUGS("Voice") << "participant \"" << result->mURI << "\" added." << LL_ENDL; } return result; @@ -3080,7 +3080,7 @@ void LLVoiceClient::removeParticipant(LLVoiceClient::participantState *participa { participantMap::iterator iter = mParticipantMap.find(participant->mURI); - llinfos << "participant \"" << participant->mURI << "\" (" << participant->mAvatarID << ") removed." << llendl; + LL_DEBUGS("Voice") << "participant \"" << participant->mURI << "\" (" << participant->mAvatarID << ") removed." << LL_ENDL; mParticipantMap.erase(iter); delete participant; @@ -3090,7 +3090,7 @@ void LLVoiceClient::removeParticipant(LLVoiceClient::participantState *participa void LLVoiceClient::removeAllParticipants() { - llinfos << "called" << llendl; + LL_DEBUGS("Voice") << "called" << LL_ENDL; while(!mParticipantMap.empty()) { @@ -3173,7 +3173,7 @@ void LLVoiceClient::clearChannelMap(void) void LLVoiceClient::addChannelMapEntry(std::string &name, std::string &uri) { -// llinfos << "Adding channel name mapping: " << name << " -> " << uri << llendl; + LL_DEBUGS("Voice") << "Adding channel name mapping: " << name << " -> " << uri << LL_ENDL; mChannelMap.insert(channelMap::value_type(name, uri)); } @@ -3196,7 +3196,7 @@ void LLVoiceClient::parcelChanged() if(getState() >= stateLoggedIn) { // If the user is logged in, start a channel lookup. - llinfos << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << llendl; + LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL; std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest"); LLSD data; @@ -3208,7 +3208,7 @@ void LLVoiceClient::parcelChanged() else { // The transition to stateLoggedIn needs to kick this off again. - llinfos << "not logged in yet, deferring" << llendl; + LL_INFOS("Voice") << "not logged in yet, deferring" << LL_ENDL; } } @@ -3220,7 +3220,7 @@ void LLVoiceClient::switchChannel( { bool needsSwitch = false; - llinfos << "called in state " << state2string(getState()) << " with uri \"" << uri << "\"" << llendl; + LL_DEBUGS("Voice") << "called in state " << state2string(getState()) << " with uri \"" << uri << "\"" << LL_ENDL; switch(getState()) { @@ -3259,12 +3259,12 @@ void LLVoiceClient::switchChannel( if(uri.empty()) { // Leave any channel we may be in - llinfos << "leaving channel" << llendl; + LL_DEBUGS("Voice") << "leaving channel" << LL_ENDL; notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED); } else { - llinfos << "switching to channel " << uri << llendl; + LL_DEBUGS("Voice") << "switching to channel " << uri << LL_ENDL; } if(getState() <= stateNoChannel) @@ -3313,12 +3313,12 @@ void LLVoiceClient::setSpatialChannel( mSpatialSessionURI = uri; mAreaVoiceDisabled = mSpatialSessionURI.empty(); - llinfos << "got spatial channel uri: \"" << uri << "\"" << llendl; + LL_DEBUGS("Voice") << "got spatial channel uri: \"" << uri << "\"" << LL_ENDL; if(mNonSpatialChannel || !mNextSessionSpatial) { // User is in a non-spatial chat or joining a non-spatial chat. Don't switch channels. - llinfos << "in non-spatial chat, not switching channels" << llendl; + LL_INFOS("Voice") << "in non-spatial chat, not switching channels" << LL_ENDL; } else { @@ -3560,7 +3560,7 @@ void LLVoiceClient::leaveChannel(void) { if(getState() == stateRunning) { -// llinfos << "leaving channel for teleport/logout" << llendl; + LL_DEBUGS("Voice") << "leaving channel for teleport/logout" << LL_ENDL; mChannelName.clear(); sessionTerminate(); } @@ -3669,7 +3669,7 @@ void LLVoiceClient::setEarLocation(S32 loc) { if(mEarLocation != loc) { - llinfos << "Setting mEarLocation to " << loc << llendl; + LL_DEBUGS("Voice") << "Setting mEarLocation to " << loc << LL_ENDL; mEarLocation = loc; mSpatialCoordsDirty = true; @@ -3678,7 +3678,7 @@ void LLVoiceClient::setEarLocation(S32 loc) void LLVoiceClient::setVoiceVolume(F32 volume) { -// llinfos << "volume is " << volume << llendl; + LL_DEBUGS("Voice") << "volume is " << volume << LL_ENDL; // incoming volume has the range [0.0 ... 1.0], with 0.5 as the default. // Map it as follows: 0.0 -> -100, 0.5 -> 24, 1.0 -> 50 @@ -3727,7 +3727,7 @@ void LLVoiceClient::setVivoxDebugServerName(std::string &serverName) void LLVoiceClient::keyDown(KEY key, MASK mask) { -// llinfos << "key is " << LLKeyboard::stringFromKey(key) << llendl; + LL_DEBUGS("Voice") << "key is " << LLKeyboard::stringFromKey(key) << LL_ENDL; if (gKeyboard->getKeyRepeated(key)) { @@ -4021,7 +4021,7 @@ void LLVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::EStatusTy mVivoxErrorStatusCode = 0; } - llinfos << " " << LLVoiceClientStatusObserver::status2string(status) << ", session URI " << mSessionURI << llendl; + LL_DEBUGS("Voice") << " " << LLVoiceClientStatusObserver::status2string(status) << ", session URI " << mSessionURI << LL_ENDL; for (status_observer_set_t::iterator it = mStatusObservers.begin(); it != mStatusObservers.end(); diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp new file mode 100644 index 0000000000..ff34fd27be --- /dev/null +++ b/indra/newview/llwatchdog.cpp @@ -0,0 +1,193 @@ +/** + * @file llthreadwatchdog.cpp + * @brief The LLThreadWatchdog class definitions + * + * $LicenseInfo:firstyear=2007&license=viewergpl$ + * + * Copyright (c) 2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" +#include "llwatchdog.h" + +// This class runs the watchdog timing thread. +class LLWatchdogTimerThread : public LLThread +{ +public: + LLWatchdogTimerThread() : + LLThread("Watchdog"), + mSleepMsecs(0), + mStopping(false) + { + } + + ~LLWatchdogTimerThread() {} + + void setSleepTime(long ms) { mSleepMsecs = ms; } + void stop() + { + mStopping = true; + ms_sleep(1); + } + + /* virtual */ void run() + { + while(!mStopping) + { + LLWatchdog::getInstance()->run(); + ms_sleep(mSleepMsecs); + } + } + +private: + long mSleepMsecs; + bool mStopping; +}; + +// LLWatchdogEntry +LLWatchdogEntry::LLWatchdogEntry() +{ +} + +LLWatchdogEntry::~LLWatchdogEntry() +{ +} + +void LLWatchdogEntry::start() +{ + LLWatchdog::getInstance()->add(this); +} + +void LLWatchdogEntry::stop() +{ + LLWatchdog::getInstance()->remove(this); +} + +// LLWatchdogTimeout +LLWatchdogTimeout::LLWatchdogTimeout() : + mTimeout(0.0f) +{ +} + +LLWatchdogTimeout::~LLWatchdogTimeout() +{ +} + +bool LLWatchdogTimeout::isAlive() const +{ + return (mTimer.getStarted() && !mTimer.hasExpired()); +} + +void LLWatchdogTimeout::setTimeout(F32 d) +{ + mTimeout = d; +} + +void LLWatchdogTimeout::start() +{ + // Order of operation is very impmortant here. + // After LLWatchdogEntry::start() is called + // LLWatchdogTimeout::isAlive() will be called asynchronously. + mTimer.start(); + mTimer.setTimerExpirySec(mTimeout); + LLWatchdogEntry::start(); +} +void LLWatchdogTimeout::stop() +{ + LLWatchdogEntry::stop(); + mTimer.stop(); +} + +void LLWatchdogTimeout::ping() +{ + mTimer.setTimerExpirySec(mTimeout); +} + +// LlWatchdog +LLWatchdog::LLWatchdog() : + mSuspectsAccessMutex(NULL), + mTimer(NULL) +{ +} + +LLWatchdog::~LLWatchdog() +{ +} + +void LLWatchdog::add(LLWatchdogEntry* e) +{ + mSuspectsAccessMutex->lock(); + mSuspects.insert(e); + mSuspectsAccessMutex->unlock(); +} + +void LLWatchdog::remove(LLWatchdogEntry* e) +{ + mSuspectsAccessMutex->lock(); + mSuspects.erase(e); + mSuspectsAccessMutex->unlock(); +} + +void LLWatchdog::init() +{ + mSuspectsAccessMutex = new LLMutex(NULL); + mTimer = new LLWatchdogTimerThread(); + mTimer->setSleepTime(1000); + mTimer->start(); +} + +void LLWatchdog::cleanup() +{ + mTimer->stop(); + delete mTimer; + delete mSuspectsAccessMutex; +} + +void LLWatchdog::run() +{ + mSuspectsAccessMutex->lock(); + + SuspectsRegistry::iterator result = + std::find_if(mSuspects.begin(), + mSuspects.end(), + std::not1(std::mem_fun(&LLWatchdogEntry::isAlive)) + ); + + if(result != mSuspects.end()) + { + // error!!! + mTimer->stop(); + + llinfos << "Watchdog detected error:" << llendl; +#ifdef LL_WINDOWS + RaiseException(0,0,0,0); +#else + raise(SIGQUIT); +#endif + } + + mSuspectsAccessMutex->unlock(); +} diff --git a/indra/newview/llwatchdog.h b/indra/newview/llwatchdog.h new file mode 100644 index 0000000000..0d897ca4c9 --- /dev/null +++ b/indra/newview/llwatchdog.h @@ -0,0 +1,95 @@ +/** + * @file llthreadwatchdog.h + * @brief The LLThreadWatchdog class declaration + * + * $LicenseInfo:firstyear=2007&license=viewergpl$ + * + * Copyright (c) 2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLTHREADWATCHDOG_H +#define LL_LLTHREADWATCHDOG_H + +#ifndef LL_TIMER_H + #include "lltimer.h" +#endif + +// LLWatchdogEntry is the interface used by the tasks that +// need to be watched. +class LLWatchdogEntry +{ +public: + LLWatchdogEntry(); + virtual ~LLWatchdogEntry(); + + // isAlive is accessed by the watchdog thread. + // This may mean that resources used by + // isAlive and other method may need synchronization. + virtual bool isAlive() const = 0; + virtual void start(); + virtual void stop(); +}; + +class LLWatchdogTimeout : public LLWatchdogEntry +{ +public: + LLWatchdogTimeout(); + virtual ~LLWatchdogTimeout(); + + /* virtual */ bool isAlive() const; + /* virtual */ void start(); + /* virtual */ void stop(); + + void setTimeout(F32 d); + void ping(); + +private: + LLTimer mTimer; + F32 mTimeout; +}; + +class LLWatchdogTimerThread; // Defined in the cpp +class LLWatchdog : public LLSingleton<LLWatchdog> +{ +public: + LLWatchdog(); + ~LLWatchdog(); + + // Add an entry to the watchdog. + void add(LLWatchdogEntry* e); + void remove(LLWatchdogEntry* e); + + void init(); + void run(); + void cleanup(); + +private: + typedef std::set<LLWatchdogEntry*> SuspectsRegistry; + SuspectsRegistry mSuspects; + LLMutex* mSuspectsAccessMutex; + LLWatchdogTimerThread* mTimer; +}; + +#endif // LL_LLTHREADWATCHDOG_H diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index 6cc7e603a6..a6fbe71d67 100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp @@ -87,7 +87,7 @@ LLWaterParamManager::~LLWaterParamManager() void LLWaterParamManager::loadAllPresets(const LLString& file_name) { LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", "")); - llinfos << "Loading water settings from " << path_name << llendl; + LL_INFOS2("AppInit", "Shaders") << "Loading water settings from " << path_name << LL_ENDL; //mParamList.clear(); @@ -97,7 +97,7 @@ void LLWaterParamManager::loadAllPresets(const LLString& file_name) std::string name; found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false); - llinfos << "name: " << name << llendl; + LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL; // if we have one if(found) @@ -112,7 +112,7 @@ void LLWaterParamManager::loadAllPresets(const LLString& file_name) std::string water_name = unescaped_name.substr(0, unescaped_name.size() - 4); LLString cur_path(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", name)); - llinfos << "Loading water from " << cur_path << llendl; + LL_DEBUGS2("AppInit", "Shaders") << "Loading water from " << cur_path << LL_ENDL; std::ifstream water_xml(cur_path.c_str()); if (water_xml) diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp index 7a90be50b8..ca7c0f26a4 100644 --- a/indra/newview/llwindebug.cpp +++ b/indra/newview/llwindebug.cpp @@ -35,7 +35,6 @@ #include <tchar.h> #include <tlhelp32.h> -#include "llappviewer.h" #include "llwindebug.h" #include "llviewercontrol.h" #include "lldir.h" @@ -106,6 +105,8 @@ MINIDUMPWRITEDUMP f_mdwp = NULL; #undef UNICODE +static LPTOP_LEVEL_EXCEPTION_FILTER gFilterFunc = NULL; + HMODULE hDbgHelp; // Tool Help functions. @@ -554,14 +555,13 @@ void LLMemoryReserve::release() static LLMemoryReserve gEmergencyMemoryReserve; // static -BOOL LLWinDebug::setupExceptionHandler() +void LLWinDebug::initExceptionHandler(LPTOP_LEVEL_EXCEPTION_FILTER filter_func) { - static BOOL s_first_run = TRUE; + static bool s_first_run = true; // Load the dbghelp dll now, instead of waiting for the crash. // Less potential for stack mangling - BOOL ok = TRUE; if (s_first_run) { // First, try loading from the directory that the app resides in. @@ -576,15 +576,7 @@ BOOL LLWinDebug::setupExceptionHandler() if (!hDll) { - llwarns << "Couldn't find dbghelp.dll!" << llendl; - - std::string msg = "Couldn't find dbghelp.dll at "; - msg += local_dll_name; - msg += "!\n"; - - //write_debug(msg.c_str()); - - ok = FALSE; + LL_WARNS("AppInit") << "Couldn't find dbghelp.dll!" << LL_ENDL; } else { @@ -592,18 +584,15 @@ BOOL LLWinDebug::setupExceptionHandler() if (!f_mdwp) { - //write_debug("No MiniDumpWriteDump!\n"); FreeLibrary(hDll); hDll = NULL; - ok = FALSE; } } gEmergencyMemoryReserve.reserve(); - } - LPTOP_LEVEL_EXCEPTION_FILTER prev_filter; - prev_filter = SetUnhandledExceptionFilter(LLWinDebug::handleException); + s_first_run = false; + } // Try to get Tool Help library functions. HMODULE hKernel32; @@ -612,26 +601,44 @@ BOOL LLWinDebug::setupExceptionHandler() Module32First_ = (MODULE32_FIRST)GetProcAddress(hKernel32, "Module32FirstW"); Module32Next_ = (MODULE32_NEST)GetProcAddress(hKernel32, "Module32NextW"); - if (s_first_run) + LPTOP_LEVEL_EXCEPTION_FILTER prev_filter; + prev_filter = SetUnhandledExceptionFilter(filter_func); + + if(prev_filter != gFilterFunc) { - // We're fine, this is the first run. - s_first_run = FALSE; - return ok; + LL_WARNS("AppInit") + << "Replacing unknown exception (" << (void *)prev_filter << ") with (" << (void *)filter_func << ") !" << LL_ENDL; } - if (!prev_filter) + + gFilterFunc = filter_func; +} + +bool LLWinDebug::checkExceptionHandler() +{ + bool ok = true; + LPTOP_LEVEL_EXCEPTION_FILTER prev_filter; + prev_filter = SetUnhandledExceptionFilter(gFilterFunc); + + if (prev_filter != gFilterFunc) { - llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with NULL!" << llendl; - ok = FALSE; + LL_WARNS("AppInit") << "Our exception handler (" << (void *)gFilterFunc << ") replaced with " << prev_filter << "!" << LL_ENDL; + ok = false; } - if (prev_filter != LLWinDebug::handleException) + + if (prev_filter == NULL) { - llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with " << prev_filter << "!" << llendl; ok = FALSE; + if (gFilterFunc == NULL) + { + LL_WARNS("AppInit") << "Exception handler uninitialized." << LL_ENDL; + } + else + { + LL_WARNS("AppInit") << "Our exception handler (" << (void *)gFilterFunc << ") replaced with NULL!" << LL_ENDL; + } } return ok; - // Internal builds don't mess with exception handling. - //return TRUE; } void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename) @@ -644,7 +651,7 @@ void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMAT else { std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, - filename); + filename); HANDLE hFile = CreateFileA(dump_path.c_str(), GENERIC_WRITE, @@ -672,20 +679,26 @@ void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMAT } // static -LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop) +void LLWinDebug::generateCrashStacks(struct _EXCEPTION_POINTERS *exception_infop) { - // *NOTE:Mani - This method is no longer the initial exception handler. - // It is called from viewer_windows_exception_handler() and other places. + // *NOTE:Mani - This method is no longer the exception handler. + // Its called from viewer_windows_exception_handler() and other places. // // Let go of a bunch of reserved memory to give library calls etc // a chance to execute normally in the case that we ran out of // memory. // - gEmergencyMemoryReserve.release(); + LLSD info; + std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, + "SecondLifeException"); + std::string log_path = dump_path + ".log"; if (exception_infop) { + // Since there is exception info... Release the hounds. + gEmergencyMemoryReserve.release(); + if(gSavedSettings.getControl("SaveMinidump") != NULL && gSavedSettings.getBOOL("SaveMinidump")) { _MINIDUMP_EXCEPTION_INFORMATION ExInfo; @@ -698,67 +711,34 @@ LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop) writeDumpToFile((MINIDUMP_TYPE)(MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory), &ExInfo, "SecondLifePlus.dmp"); } - - std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, - "SecondLifeException"); - - std::string log_path = dump_path + ".log"; - - LLSD info; info = Get_Exception_Info(exception_infop); + } + LLSD threads; + std::vector<DWORD> thread_ids; + GetProcessThreadIDs(GetCurrentProcessId(), thread_ids); - LLSD threads; - std::vector<DWORD> thread_ids; - GetProcessThreadIDs(GetCurrentProcessId(), thread_ids); - - for(std::vector<DWORD>::iterator th_itr = thread_ids.begin(); - th_itr != thread_ids.end(); - ++th_itr) + for(std::vector<DWORD>::iterator th_itr = thread_ids.begin(); + th_itr != thread_ids.end(); + ++th_itr) + { + LLSD thread_info; + if(*th_itr != GetCurrentThreadId()) { - LLSD thread_info; - if(*th_itr != GetCurrentThreadId()) - { - GetThreadCallStack(*th_itr, thread_info); - } - - if(thread_info) - { - - threads[llformat("ID %d", *th_itr)] = thread_info; - } + GetThreadCallStack(*th_itr, thread_info); } + if(thread_info) + { + threads[llformat("ID %d", *th_itr)] = thread_info; + } + } - info["Threads"] = threads; - - if (info) - { - std::ofstream out_file(log_path.c_str()); - LLSDSerialize::toPrettyXML(info, out_file); - out_file.close(); - } - } - else - { - // We're calling this due to a network error, not due to an actual exception. - // It doesn't realy matter what we return. - return EXCEPTION_CONTINUE_SEARCH; - } - - //handle viewer crash must be called here since - //we don't return handling of the application - //back to the process. - LLAppViewer::handleViewerCrash(); + info["Threads"] = threads; - // - // At this point, we always want to exit the app. There's no graceful - // recovery for an unhandled exception. - // - // Just kill the process. - LONG retval = EXCEPTION_EXECUTE_HANDLER; - - return retval; + std::ofstream out_file(log_path.c_str()); + LLSDSerialize::toPrettyXML(info, out_file); + out_file.close(); } #endif diff --git a/indra/newview/llwindebug.h b/indra/newview/llwindebug.h index bb1f11df67..f7543597cc 100644 --- a/indra/newview/llwindebug.h +++ b/indra/newview/llwindebug.h @@ -38,10 +38,36 @@ class LLWinDebug { public: - static BOOL setupExceptionHandler(); - static LONG WINAPI handleException(struct _EXCEPTION_POINTERS *pExceptionInfo); + + /** + * @brief initialize the llwindebug exception filter callback + * + * Hand a windows unhandled exception filter to LLWinDebug + * This method should only be called to change the + * exception filter used by llwindebug. + * + * Setting filter_func to NULL will clear any custom filters. + **/ + static void initExceptionHandler(LPTOP_LEVEL_EXCEPTION_FILTER filter_func); + + /** + * @brief check the status of the exception filter. + * + * Resets unhandled exception filter to the filter specified + * w/ initExceptionFilter). + * Returns false if the exception filter was modified. + * + * *NOTE:Mani In the past mozlib has been accused of + * overriding the exception filter. If the mozlib filter + * is required, perhaps we can chain calls from our + * filter to mozlib's. + **/ + static bool checkExceptionHandler(); + + static void generateCrashStacks(struct _EXCEPTION_POINTERS *pExceptionInfo = NULL); static void writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename); +private: }; #endif // LL_LLWINDEBUG_H diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index ea960b39cd..5fb8990774 100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp @@ -111,7 +111,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name) if(file_name != "") { LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", file_name)); - llinfos << "Loading WindLight settings from " << path_name << llendl; + LL_INFOS2("AppInit", "Shaders") << "Loading WindLight settings from " << path_name << LL_ENDL; llifstream presetsXML(path_name.c_str()); @@ -137,7 +137,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name) else { LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", "")); - llinfos << "Loading WindLight settings from " << path_name << llendl; + LL_INFOS2("AppInit", "Shaders") << "Loading WindLight settings from " << path_name << LL_ENDL; //mParamList.clear(); @@ -147,7 +147,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name) std::string name; found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false); - llinfos << "name: " << name << llendl; + LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL; // if we have one if(found) @@ -162,7 +162,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name) std::string sky_name = unescaped_name.substr(0, unescaped_name.size() - 4); LLString cur_path(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", name)); - llinfos << "Loading sky from " << cur_path << llendl; + LL_DEBUGS2("AppInit", "Shaders") << "Loading sky from " << cur_path << LL_ENDL; std::ifstream sky_xml(cur_path.c_str()); if (sky_xml) diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index e2463adde3..f1e0a6b55f 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -1115,6 +1115,10 @@ void process_region_handshake(LLMessageSystem* msg, void** user_data) void send_agent_pause() { + // *NOTE:Mani Pausing the mainloop timeout. Otherwise a long modal event may cause + // the thread monitor to timeout. + LLAppViewer::instance()->stopMainloopTimeout(); + // Note: used to check for LLWorld initialization before it became a singleton. // Rather than just remove this check I'm changing it to assure that the message // system has been initialized. -MG @@ -1170,6 +1174,8 @@ void send_agent_resume() // Reset the FPS counter to avoid an invalid fps LLViewerStats::getInstance()->mFPSStat.start(); + + LLAppViewer::instance()->startMainloopTimeout(); } diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index fc4ede5bab..9f1d8abca7 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -569,10 +569,10 @@ F64 LLXMLRPCTransaction::transferRate() double rate_bits_per_sec = impl.mTransferInfo.mSpeedDownload * 8.0; - llinfos << "Buffer size: " << impl.mResponseText.size() << " B" << llendl; - llinfos << "Transfer size: " << impl.mTransferInfo.mSizeDownload << " B" << llendl; - llinfos << "Transfer time: " << impl.mTransferInfo.mTotalTime << " s" << llendl; - llinfos << "Transfer rate: " << rate_bits_per_sec / 1000.0 << " Kb/s" << llendl; + LL_INFOS("AppInit") << "Buffer size: " << impl.mResponseText.size() << " B" << LL_ENDL; + LL_DEBUGS("AppInit") << "Transfer size: " << impl.mTransferInfo.mSizeDownload << " B" << LL_ENDL; + LL_DEBUGS("AppInit") << "Transfer time: " << impl.mTransferInfo.mTotalTime << " s" << LL_ENDL; + LL_INFOS("AppInit") << "Transfer rate: " << rate_bits_per_sec / 1000.0 << " Kb/s" << LL_ENDL; return rate_bits_per_sec; } |