|
|
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
| |