summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llappviewer.cpp14
-rw-r--r--indra/newview/llappviewer.h1
-rw-r--r--indra/newview/llappviewerwin32.cpp6
4 files changed, 32 insertions, 0 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 142378b540..bc06078928 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2963,6 +2963,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>FastQuit</key>
+ <map>
+ <key>Comment</key>
+ <string>Quits as quickly as possible, only sending logout request before forcefully terminating. Use with care, as this might result in data corruption or loss.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>FeatureManagerHTTPTable</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index e6661e4c9a..91fae709df 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2879,8 +2879,22 @@ void LLAppViewer::forceQuit()
LLApp::setQuitting();
}
+void LLAppViewer::fastQuit()
+{
+ if (LLStartUp::getStartupState() >= STATE_STARTED)
+ {
+ sendLogoutRequest();
+ }
+ _exit(isError());
+}
+
void LLAppViewer::requestQuit()
{
+ if (gSavedSettings.getBOOL("FastQuit"))
+ {
+ fastQuit();
+ }
+
llinfos << "requestQuit" << llendl;
LLViewerRegion* region = gAgent.getRegion();
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index b0f8c1dc3d..62ebd0712e 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -66,6 +66,7 @@ public:
// Application control
void forceQuit(); // Puts the viewer into 'shutting down without error' mode.
+ void fastQuit(); // Shuts down the viewer immediately after sending a logout message
void requestQuit(); // Request a quit. A kinder, gentler quit.
void userQuit(); // The users asks to quit. Confirm, then requestQuit()
void earlyExit(const std::string& name,
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index d328567a0e..2c6f014d17 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -175,6 +175,12 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
viewer_app_ptr->mainLoop();
}
+ if (gSavedSettings.getBOOL("FastQuit"))
+ {
+ viewer_app_ptr->fastQuit();
+ }
+
+
if (!LLApp::isError())
{
//