Difference between revisions of "LLViewerApp"

From Second Life Wiki
Jump to navigation Jump to search
(Replacing page with 'See Viewer App Cleanup')
 
Line 1: Line 1:
See [[Viewer App Cleanup]]
See [[Viewer App Cleanup]]
= Objectives =
* Improve the stability and maintainability of the Second Life Viewer code by cleaning up the initialization and main loop code
* Move the main loop to a separate thread so that infinite loops can be detected and debugged
= See Also =
* [[Viewer Roadmap]]
* [[User Interface Roadmap]]
= Tasks =
== Phase 1 ==
* Create a LLViewerApp class based on LLApp
** Move class initialization and parameter parsing to LLViewerApp
** Move all error handling to LLViewerApp (errors set a flag and sleep, LLViewerApp generates the exception)
** Move all debug/info/warning/error text printing to LLViewerApp
*** Print text to a buffer instead of stdio
*** Send the buffer to stdio in LLViewerApp loop
*** Use a proper window for viewing console text in the Viewer
*** Move unheeded warnings to debugs
*** Clean up info messages
* Create a LLViewerThread class based on LLThread
** Move the main loop into LLViewerThread
* Eliminate viewer.cpp
** Create proper C++ abstractions for any remaining code in viewer.cpp
* Add a 'watchdog' to LLViewerApp to detect infinite loops and trigger a crash
** Each thread needs its own watchdog
*** Some thread, e.g. decode thread may be able to be safely restarted on OSX if they crash
** Ensure that the crash handler generates proper stack information for LLViewerThread
** Add a 'Debug > Test > Force Crash', 'Force Infinite Loop', and 'Force Deadlock' debug options
== Test Plan ==
* Run Second Life on all platforms. Include all available hardware configurations (Intel, AMD, PPC, single processor, dual core, dual processor)
** Run frame rate tests and ensure that frame rate is at least 95% of current client's frame rate
* Ensure that the Crash reporter still works
** Test various crash scenarios:
*** Force a crash using the debug option.
*** Force an infinite loop using the debug option.
*** Force a deadlock using the debug option.
** Ensure each crash triggers a report
*** Send the report numbers to Dev so they can ensure that the crashes have the correct call stack info
** Test crashes on Windows, Mac, and Linux
* Use Client > Console > Debug Console to view debug messages while running
** Ensure that they get displayed in order
* Scan the log file after a session and look for any warnings.
** Report any warnings that show up.
** Check for any unhelpful info messages
== Phase 2 ==
=== LLViewerLogin ===
* Abstract the login sequence into a class
=== Eliminate startup.cpp ===
* Create proper C++ abstractions for startup using LLViewerLogin
=== Lightweight Client ===
* Create a client that logs in to Second Life without running the 3D render pipeline

Latest revision as of 10:29, 23 August 2007