summaryrefslogtreecommitdiff
path: root/indra/newview/llappviewer.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llappviewer.h')
-rw-r--r--indra/newview/llappviewer.h45
1 files changed, 35 insertions, 10 deletions
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 3da0246ccf..d76e5015e9 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -77,6 +77,8 @@ typedef enum
LAST_EXEC_BAD_ALLOC,
LAST_EXEC_MISSING_FILES,
LAST_EXEC_GRAPHICS_INIT,
+ LAST_EXEC_UNKNOWN,
+ LAST_EXEC_LOGOUT_UNKNOWN,
LAST_EXEC_COUNT
} eLastExecEvent;
@@ -115,9 +117,6 @@ public:
bool quitRequested() { return mQuitRequested; }
bool logoutRequestSent() { return mLogoutRequestSent; }
bool isSecondInstance() { return mSecondInstance; }
- bool isUpdaterMissing(); // In use by tests
- bool waitForUpdater();
-
void writeDebugInfo(bool isStatic=true);
void setServerReleaseNotesURL(const std::string& url) { mServerReleaseNotesURL = url; }
@@ -149,6 +148,12 @@ public:
std::string getWindowTitle() const; // The window display name.
void forceDisconnect(const std::string& msg); // Force disconnection, with a message to the user.
+
+ // sendSimpleLogoutRequest does not create a marker file.
+ // Meant for lost network case, and for forced shutdowns,
+ // to at least attempt to remove the ghost from the world.
+ void sendSimpleLogoutRequest();
+
void badNetworkHandler(); // Cause a crash state due to bad network packet.
bool hasSavedFinalSnapshot() { return mSavedFinalSnapshot; }
@@ -175,6 +180,7 @@ public:
virtual void forceErrorCoroprocedureCrash();
virtual void forceErrorWorkQueueCrash();
virtual void forceErrorThreadCrash();
+ virtual void forceExceptionThreadCrash();
// The list is found in app_settings/settings_files.xml
// but since they are used explicitly in code,
@@ -197,11 +203,13 @@ public:
// For thread debugging.
// llstartup needs to control init.
// llworld, send_agent_pause() also controls pause/resume.
- void initMainloopTimeout(const std::string& state, F32 secs = -1.0f);
+ void initMainloopTimeout(std::string_view state);
void destroyMainloopTimeout();
void pauseMainloopTimeout();
- void resumeMainloopTimeout(const std::string& state = "", F32 secs = -1.0f);
- void pingMainloopTimeout(const std::string& state, F32 secs = -1.0f);
+ void resumeMainloopTimeout(std::string_view state = "");
+ void pingMainloopTimeout(std::string_view state);
+
+ F32 getMainloopTimeoutSec() const;
// Handle the 'login completed' event.
// *NOTE:Mani Fix this for login abstraction!!
@@ -215,10 +223,11 @@ public:
return mOnLoginCompleted.connect(cb);
}
- void addOnIdleCallback(const boost::function<void()>& cb); // add a callback to fire (once) when idle
+ void addOnIdleCallback(const std::function<void()>& cb); // add a callback to fire (once) when idle
void initGeneralThread();
void purgeUserDataOnExit() { mPurgeUserDataOnExit = true; }
+ void purgeCefStaleCaches(); // Remove old, stale CEF cache folders
void purgeCache(); // Clear the local cache.
void purgeCacheImmediate(); //clear local cache immediately.
S32 updateTextureThreads(F32 max_time);
@@ -243,6 +252,10 @@ public:
// Writes an error code into the error_marker file for use on next startup.
void createErrorMarker(eLastExecEvent error_code) const;
+ bool errorMarkerExists() const;
+
+ void createWatchdogMarker() const;
+ void removeWatchdogMarker() const;
// Attempt a 'soft' quit with disconnect and saving of settings/cache.
// Intended to be thread safe.
@@ -250,6 +263,13 @@ public:
// Note: mQuitRequested can be aborted by user.
void outOfMemorySoftQuit();
+#ifdef LL_DISCORD
+ static void initDiscordSocial();
+ static void updateDiscordActivity();
+ static void updateDiscordPartyCurrentSize(int32_t size);
+ static void updateDiscordPartyMaxSize(int32_t size);
+#endif
+
protected:
virtual bool initWindow(); // Initialize the viewer's window.
virtual void initLoggingAndGetLastDuration(); // Initialize log files, logging system
@@ -267,6 +287,14 @@ protected:
virtual void sendOutOfDiskSpaceNotification();
+protected:
+
+ // NSIS relies on this to detect if viewer is up.
+ // NSIS's method is somewhat unreliable since window
+ // can close long before cleanup is done.
+ // sendURLToOtherInstance also relies on this to detect if viewer is up.
+ static constexpr const char* sWindowClass = "Second Life";
+
private:
bool doFrame();
@@ -307,7 +335,6 @@ private:
static LLAppViewer* sInstance;
bool mSecondInstance; // Is this a second instance of the app?
- bool mUpdaterNotFound; // True when attempt to start updater failed
std::string mMarkerFileName;
LLAPRFile mMarkerFile; // A file created to indicate the app is running.
@@ -397,8 +424,6 @@ extern S32 gPendingMetricsUploads;
extern F32 gSimLastTime;
extern F32 gSimFrames;
-extern bool gDisconnected;
-
extern LLFrameTimer gRestoreGLTimer;
extern bool gRestoreGL;
extern bool gUseWireframe;