From 04add8806e49f0e5355666b9b8186d6e0bf78781 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 5 Nov 2009 16:53:35 -0500 Subject: Support QAModeTermCode var for unattended shutdown on LL_ERRS. Normally LL_ERRS in a developer build of the viewer pops up an OS message box with the text of the LL_ERRS log message, requiring user intervention to proceed. This isn't good for unattended testing, especially on Parabuild machines. Running the viewer with '--set QAModeTermCode n' for some 0 < n < 256 will, on LL_ERRS, cause the viewer to terminate immediately with _exit(n). --- indra/newview/app_settings/settings.xml | 13 ++++++++++++- indra/newview/llappviewer.cpp | 16 ++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'indra') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7254fff664..da7caad21e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5473,7 +5473,18 @@ QAModeEventHostPort Comment - Enable Testing Features. + Port on which lleventhost should listen + Persist + 0 + Type + S32 + Value + -1 + + QAModeTermCode + + Comment + On LL_ERRS, terminate with this code instead of OS message box Persist 0 Type diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 873215169e..e95eec4741 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -620,7 +620,19 @@ bool LLAppViewer::init() if (!initConfiguration()) return false; - + + // Although initLogging() is the right place to mess with + // setFatalFunction(), we can't query gSavedSettings until after + // initConfiguration(). + S32 rc(gSavedSettings.getS32("QAModeTermCode")); + if (rc >= 0) + { + // QAModeTermCode set, terminate with that rc on LL_ERRS. Use _exit() + // rather than exit() because normal cleanup depends too much on + // successful startup! + LLError::setFatalFunction(boost::bind(_exit, rc)); + } + mAlloc.setProfilingEnabled(gSavedSettings.getBOOL("MemProfiling")); // *NOTE:Mani - LLCurl::initClass is not thread safe. @@ -1665,7 +1677,7 @@ bool LLAppViewer::initLogging() LLError::initForApplication( gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); LLError::setFatalFunction(errorCallback); - + // Remove the last ".old" log file. std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SecondLife.old"); -- cgit v1.2.3