User:Callahanp/Flightgear and Simgear Code/From Command Line to Holding Short
Jump to navigation
Jump to search
sglog().setStartupLoggingEnabled(true); || /simgear/debug/logstream.cxx || Pretty obvious what this does. || What does sglog() actually return?
I start by stepping through bootstrap and other modules until flightgear is up and running. I'm making some notes. There are three tables below:
- Path will trace the path through modules that provide significant functionality to the Simulator until the aircraft is shown holding short or parked somewhere. only the module's source path and a brief explanation or list of why it's on the "path".
- Modules lists all the classes and methods or functions executed on the "path" as well as those that are not executed in the path.
- Utility Calls will contain notes on various library calls, noting what the call looks like, where the library comes from, what the call does and where else it might be used. These will be functions with a purpose that is not limited to flight simulation.
From Command Line to Holding Short
When you start flight gear, several activities take place
* logging is set up * command line arguments are checked, read and saved * a global object is created to hold state and references to managing functions of several types * a tree of properties is built on the global object * various static objects are created and initialized * scenery data is downloaded using terrasync * airport and aircraft data is scanned and made available * scenery data is read and made available * an interpreter is started * connections to multiplayer servers are made * a scene is established as a "view" with scenery, Airport data and the Aircraft * an event loop is started to finish the initialization, display a splash screen. The event loop then shows the first frame and then adjust the view as time goes on, based on changes in controls, weather, aircraft position, speed, attitude and time.
Module | Description & Steps | ||
---|---|---|---|
src/Main/bootstrap Main | Bootstrap provides the top level of the stack for executing either fgviewerMain or fgMainInit.
|
|
|
src/Main/Main | fgMainInit( int argc, char **argv )
|
|
|
viewer/fg_os_osgviewer.cxx | fgOSMainLoop()
|
here's the loop:
| |
Main/main.cxx | fgIdleFunc
|
|
Note fgResetIdleState() sets the state to 2000 and re-registers fgIdleFunction as the idle handler. |
Main/main.cxx | We seem to have arrived. We're at the hold short point. |
Minor functions on the Path to Holding Short
sglog().setLogLevels( SG_ALL, SG_INFO )sglog().setStartupLoggingEnabled(true); || /simgear/debug/logstream.cxx || Pretty obvious what this does. || What does sglog() actually return?
Module | Description | Steps |
---|---|---|
src/Main/globals | Provides a global object to contain references to objects and data needed in initializing, running and terminating flightgear |
|
<boost/foreach.h> | Example | |
<algorithm> | Example | Example |
std::string version(FLIGHTGEAR_VERSION) | ||
sg_srandom_time(); | ||
src/Main/Main.cxxfgInitConfig | ||
src/Main/Main.cxx Launcher | ||
src/Add-ons/AddonManager.cxx | addons::AddonManager::createInstance() | |
initFlightGearEmbeddedResources | see file build/flightgear/src/EmbeddedResources/FlightGear-resources.cxx,automatically generated by fgrcc | |
viewer/fg_os_osgviewer.cxx fgosinit(int* argc, char** argv) | ||
Main/fg_os_common.cxx | fgRegisterIdleHandler( & fgIdleFunction | |
detectSIMD() | bootstrap.cxx | returns true if the cpu supports sse2. |
gethostname(_hostname, 256) | unistd.h glibc | returns the hostname of your computer |
signal(SIGPIPE, SIG_IGN) | signal.h | directs SIGPIPE to the SIG_IGN signal handler - Portability: use sigaction() instead |
signal(SIGSEGV, segfault_handler) | signal.h | Flightgear formats the message with a backtrace and exits with std:abort() |
segfault_handler (int signo) | bootstrap.cxx | |
initFPE(flightgear::Options::checkForArg(argc, argv, "enable-fpe")) | main/options.cxx bootstrap.cxx |
checks the command line arguments for the enable-fpe option. Calls InitFPE with the result. see bootstrap.cxx for more details |
signal(SIGFPE, handleFPE) | signal.h bootstrap.cxx |
We handle Floating Point Exceptions |
setlocale(LC_ALL, "") setlocale(LC_NUMERIC, "C") setlocale(LC_COLLATE, "C") |
||
return fgUninstall() | fg_init.cxx | Command line options are checked to determine if uninstall should be called. |
sglog() | /simgear/debug/logstream.cxx | This initializes the log. see logstream.cxx for details |
std::set_terminate(fg_terminate); | <exception> bootstrap.cxx |
sets the standard template library terminate routine |
atexit(fgExitCleanup) | stdlib.h bootstrap.cxx |
registers the given function to be called at normal process termination, either via exit(3) or via return from the program's main(). Functions so registered are called in the reverse order of their registration; no arguments are passed |
fgviewerMain(argc, argv) | flightgear/Viewer/fgviewer.cxx | see viewer topics for details. This is called in bootstrap.cxx if the command line arguments include --viewer |
fgMainInit(argc, argv) | Main/main.cxx | Starts to initialize flightgear. This is called in bootstrap.cxx if command line arguments do not contain --viewer |
catch block | various | termination for most or all errors. Read the end of bootstrap.cxx for more information |
flightgear::shutdownQtApp() | bootstrap Qt |
Done separately from atexit. see bootstrap.cxx for more information |
crInstall(&info) crUninstall() |
CrashRpt.h | #if defined(HAVE_CRASHRPT). This only happens on windows. |