LLViewerApp

From Second Life Wiki
Jump to navigation Jump to search

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

Tasks

Phase 1

LLViewerApp

  • Create a LLViewerApp class based on LLAppb
  • 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

LLViewerThread

  • 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

Watchdog

  • Add a 'watchdog' to LLViewerApp to detect infinite loops and trigger a crash
  • Ensure that the crash handler generates proper stack information for LLViewerThread

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