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.h298
1 files changed, 298 insertions, 0 deletions
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
new file mode 100644
index 0000000000..227a27a8ac
--- /dev/null
+++ b/indra/newview/llappviewer.h
@@ -0,0 +1,298 @@
+/**
+ * @file llappviewer.h
+ * @brief The LLAppViewer 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_LLAPPVIEWER_H
+#define LL_LLAPPVIEWER_H
+
+class LLTextureCache;
+class LLWorkerThread;
+class LLTextureFetch;
+
+class LLAppViewer : public LLApp
+{
+public:
+ LLAppViewer();
+ virtual ~LLAppViewer();
+
+ // *NOTE:Mani - Don't use this!
+ // Having
+ static LLAppViewer* instance() {return sInstance; }
+
+ //
+ // Main application logic
+ //
+ virtual bool init(); // Override to do application initialization
+ virtual bool cleanup(); // Override to do application cleanup
+ virtual bool mainLoop(); // Override for the application main loop. Needs to at least gracefully notice the QUITTING state and exit.
+
+ // Application control
+ void forceQuit(); // Puts the viewer into 'shutting down without error' mode.
+ void requestQuit(); // Request a quit. A kinder, gentler quit.
+ void userQuit(); // The users asks to quit. Confirm, then requestQuit()
+ void earlyExit(const LLString& msg); // Display an error dialog and forcibly quit.
+ void forceExit(S32 arg); // exit() immediately (after some cleanup).
+ void abortQuit(); // Called to abort a quit request.
+
+ bool quitRequested() { return mQuitRequested; }
+ bool logoutRequestSent() { return mLogoutRequestSent; }
+
+ // *FIX: This is meant to stay only until the command line issues are hashed out with repect to LLApp::parseCommandLine
+ // This version stores the argc and argv for later usage, make sure the params passed in last as long as this class.
+ bool tempStoreCommandOptions(int argc, char** argv);
+
+ // write string to "debug_info.log", used for crash reporting.
+ void writeDebug(const char *str);
+ void writeDebug(const std::string& str) { writeDebug(str.c_str()); };
+ void closeDebug();
+
+ const LLOSInfo& getOSInfo() const { return mSysOSInfo; }
+
+ // Report true if under the control of a debugger. A null-op default.
+ virtual bool beingDebugged() { return false; }
+
+ S32 getCrashBehavior() const { return mCrashBehavior; }
+ void setCrashBehavior(S32 cb);
+ virtual void handleCrashReporting() = 0; // What to do with crash report?
+ static void handleViewerCrash(); // Hey! The viewer crashed. Do this.
+
+ // Thread accessors
+ static LLTextureCache* getTextureCache() { return sTextureCache; }
+ static LLWorkerThread* getImageDecodeThread() { return sImageDecodeThread; }
+ static LLTextureFetch* getTextureFetch() { return sTextureFetch; }
+
+ const std::string& getSerialNumber() { return mSerialNumber; }
+
+ // *FIX:Mani purgeCache was made public for parse_args().
+ // If that beast is gone, make it private.
+ void purgeCache(); // Clear the local cache.
+ bool getPurgeCache() const { return mPurgeCache; }
+
+ const LLString& getSecondLifeTitle() const; // The Second Life title.
+ const LLString& getWindowTitle() const; // The window display name.
+
+ // Helpers for URIs
+ void addLoginURI(const std::string& uri);
+ void setHelperURI(const std::string& uri);
+ const std::vector<std::string>& getLoginURIs() const;
+ const std::string& getHelperURI() const;
+ void resetURIs() const;
+
+ void forceDisconnect(const LLString& msg); // Force disconnection, with a message to the user.
+ void badNetworkHandler(); // Cause a crash state due to bad network packet.
+
+ bool hasSavedFinalSnapshot() { return mSavedFinalSnapshot; }
+ void saveFinalSnapshot();
+
+ void loadNameCache();
+ void saveNameCache();
+
+ // LLAppViewer testing helpers.
+ // *NOTE: These will potentially crash the viewer. Only for debugging.
+ virtual void forceErrorLLError();
+ virtual void forceErrorBreakpoint();
+ virtual void forceErrorBadMemoryAccess();
+ virtual void forceErrorInifiniteLoop();
+ virtual void forceErrorSoftwareException();
+
+protected:
+ virtual bool initWindow(); // Initialize the viewer's window.
+ virtual bool initLogging(); // Initialize log files, logging system, return false on failure.
+ virtual bool initHardwareTest() { return true; } // A false result indicates the app should quit.
+
+ virtual std::string generateSerialNumber() = 0; // Platforms specific classes generate this.
+
+
+private:
+
+ bool initEarlyConfiguration(); // Initialize setting needed by crash reporting.
+ bool initThreads(); // Initialize viewer threads, return false on failure.
+ bool initConfiguration(); // Initialize settings from the command line/config file.
+
+ bool initCache(); // Initialize local client cache.
+
+ bool doConfigFromCommandLine(); // calls parse args.
+
+ void cleanupSavedSettings(); // Sets some config data to current or default values during cleanup.
+ void removeCacheFiles(const char *filemask); // Deletes cached files the match the given wildcard.
+
+ void writeSystemInfo(); // Write system info to "debug_info.log"
+
+ bool anotherInstanceRunning();
+ void initMarkerFile();
+ void removeMarkerFile();
+
+ void idle();
+ void idleShutdown();
+ void idleNetwork();
+
+ void sendLogoutRequest();
+ void disconnectViewer();
+
+ // *FIX: the app viewer class should be some sort of singleton, no?
+ // Perhaps its child class is the singleton and this should be an abstract base.
+ static LLAppViewer* sInstance;
+
+ bool mSecondInstance; // Is this a second instance of the app?
+
+ FILE *mMarkerFile; // A file created to indicate the app is running.
+ bool mLastExecFroze; // Set on init if the marker file was found.
+
+ FILE* mDebugFile; // output stream written to via writeDebug()
+
+ LLOSInfo mSysOSInfo;
+ S32 mCrashBehavior;
+ bool mReportedCrash;
+
+ // Thread objects.
+ static LLTextureCache* sTextureCache;
+ static LLWorkerThread* sImageDecodeThread;
+ static LLTextureFetch* sTextureFetch;
+
+ S32 mNumSessions;
+
+ std::string mSerialNumber;
+ bool mPurgeCache;
+ bool mPurgeOnExit;
+
+ bool mSavedFinalSnapshot;
+
+ bool mQuitRequested; // User wants to quit, may have modified documents open.
+ bool mLogoutRequestSent; // Disconnect message sent to simulator, no longer safe to send messages to the sim.
+};
+
+// consts from viewer.h
+const S32 AGENT_UPDATES_PER_SECOND = 10;
+
+// Globals with external linkage. From viewer.h
+// *NOTE:Mani - These will be removed as the Viewer App Cleanup project continues.
+//
+// "// llstartup" indicates that llstartup is the only client for this global.
+
+extern bool gVerifySSLCert; // parse_args setting used by llxmlrpctransaction.cpp
+extern BOOL gHandleKeysAsync; // gSavedSettings used by llviewerdisplay.cpp & llviewermenu.cpp
+extern BOOL gProbeHardware;
+extern LLString gDisabledMessage; // llstartup
+extern BOOL gHideLinks; // used by llpanellogin, lllfloaterbuycurrency, llstartup
+extern BOOL gInProductionGrid;
+
+extern BOOL gAllowIdleAFK;
+extern F32 gAFKTimeout;
+extern BOOL gShowObjectUpdates;
+
+extern BOOL gLogMessages; // llstartup
+extern std::string gChannelName;
+extern BOOL gUseAudio; // llstartup
+
+extern LLString gCmdLineFirstName; // llstartup
+extern LLString gCmdLineLastName;
+extern LLString gCmdLinePassword;
+
+extern BOOL gAutoLogin; // llstartup
+extern const char* DEFAULT_SETTINGS_FILE; // llstartup
+
+extern BOOL gRequestInventoryLibrary; // llstartup
+extern BOOL gGodConnect; // llstartup
+
+extern BOOL gAcceptTOS;
+extern BOOL gAcceptCriticalMessage;
+
+extern LLUUID gViewerDigest; // MD5 digest of the viewer's executable file.
+extern BOOL gLastExecFroze; // llstartup
+
+extern U32 gFrameCount;
+extern U32 gForegroundFrameCount;
+
+extern LLPumpIO* gServicePump;
+
+// Is the Pacific time zone (aka server time zone)
+// currently in daylight savings time?
+extern BOOL gPacificDaylightTime;
+
+extern U64 gFrameTime; // The timestamp of the most-recently-processed frame
+extern F32 gFrameTimeSeconds; // Loses msec precision after ~4.5 hours...
+extern F32 gFrameIntervalSeconds; // Elapsed time between current and previous gFrameTimeSeconds
+extern F32 gFPSClamped; // Frames per second, smoothed, weighted toward last frame
+extern F32 gFrameDTClamped;
+extern U64 gStartTime;
+
+extern LLTimer gRenderStartTime;
+extern LLFrameTimer gForegroundTime;
+
+extern F32 gLogoutMaxTime;
+extern LLTimer gLogoutTimer;
+
+extern F32 gSimLastTime;
+extern F32 gSimFrames;
+
+extern LLUUID gInventoryLibraryOwner;
+extern LLUUID gInventoryLibraryRoot;
+
+extern BOOL gDisconnected;
+extern BOOL gDisableVoice;
+
+// Map scale in pixels per region
+extern F32 gMapScale;
+extern F32 gMiniMapScale;
+
+extern LLFrameTimer gRestoreGLTimer;
+extern BOOL gRestoreGL;
+extern BOOL gUseWireframe;
+
+extern F32 gMouseSensitivity;
+extern BOOL gInvertMouse;
+
+// VFS globals - gVFS is for general use
+// gStaticVFS is read-only and is shipped w/ the viewer
+// it has pre-cache data like the UI .TGAs
+extern LLVFS *gStaticVFS;
+
+extern LLMemoryInfo gSysMemory;
+
+extern bool gPreloadImages;
+extern bool gPreloadSounds;
+
+extern LLString gLastVersionChannel;
+
+extern LLVector3 gWindVec;
+extern LLVector3 gRelativeWindVec;
+extern U32 gPacketsIn;
+extern BOOL gPrintMessagesThisFrame;
+
+extern LLUUID gSunTextureID;
+extern LLUUID gMoonTextureID;
+
+extern BOOL gUseConsole;
+
+extern BOOL gRandomizeFramerate;
+extern BOOL gPeriodicSlowFrame;
+
+extern BOOL gQAMode;
+#endif // LL_LLAPPVIEWER_H