Difference between revisions of "LLViewerApp"

From Second Life Wiki
Jump to navigation Jump to search
(Replacing page with 'See Viewer App Cleanup')
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
= Objectives =
See [[Viewer App Cleanup]]
* 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 11:29, 23 August 2007