X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fglobals.cxx;h=782a229a88a7498568d031ae670bd5a6192dc489;hb=18d1593c42c2df60d7fb44ace722ca3e8a7fd82c;hp=ecea15d0c251eb9835af6664ba07e1d8eec4665c;hpb=b0cd31415acdabcd5011d6207b5f75c8733948cb;p=flightgear.git diff --git a/src/Main/globals.cxx b/src/Main/globals.cxx index ecea15d0c..782a229a8 100644 --- a/src/Main/globals.cxx +++ b/src/Main/globals.cxx @@ -24,7 +24,6 @@ # include #endif -#include #include #include #include @@ -32,11 +31,13 @@ #include #include #include +#include +#include #include #include -#include -#include +#include +#include #include #include #include @@ -46,6 +47,8 @@ #include #include #include +#include +#include #include "globals.hxx" #include "renderer.hxx" @@ -70,9 +73,6 @@ FGGlobals::FGGlobals() : event_mgr( new SGEventMgr ), sim_time_sec( 0.0 ), fg_root( "" ), -#if defined(FX) && defined(XMESA) - fullscreen( true ), -#endif warp( 0 ), warp_delta( 0 ), time_params( NULL ), @@ -82,8 +82,6 @@ FGGlobals::FGGlobals() : route_mgr( NULL ), current_panel( NULL ), soundmgr( NULL ), - airports( NULL ), - runways( NULL ), ATC_mgr( NULL ), AI_mgr( NULL ), controls( NULL ), @@ -92,7 +90,6 @@ FGGlobals::FGGlobals() : initial_state( NULL ), locale( NULL ), commands( SGCommandMgr::instance() ), - model_lib( NULL ), acmodel( NULL ), model_mgr( NULL ), channel_options_list( NULL ), @@ -105,11 +102,9 @@ FGGlobals::FGGlobals() : loclist( NULL ), gslist( NULL ), dmelist( NULL ), - mkrlist( NULL ), tacanlist( NULL ), carrierlist( NULL ), channellist( NULL ), - fixlist( NULL ), airwaynet( NULL ), multiplayer_mgr( NULL ) { @@ -127,65 +122,63 @@ FGGlobals::~FGGlobals() // shut down all subsystems, make sure we take down the // AIModels system first. subsystem_mgr->get_group(SGSubsystemMgr::GENERAL)->remove_subsystem("ai_model"); - delete subsystem_mgr; - delete event_mgr; - delete time_params; - delete ephem; - delete mag; - delete matlib; - delete route_mgr; - delete current_panel; - delete soundmgr; - delete airports; - - delete runways; - delete ATC_mgr; - delete AI_mgr; - delete controls; - delete viewmgr; - - delete initial_state; -// //delete locale; Don't delete locale + delete subsystem_mgr; + delete event_mgr; + delete time_params; + delete ephem; + delete mag; + delete matlib; + delete route_mgr; + delete current_panel; + delete soundmgr; + + delete ATC_mgr; + delete AI_mgr; + delete controls; + delete viewmgr; + // delete commands; - delete model_lib; - delete acmodel; - delete model_mgr; - delete channel_options_list; - delete initial_waypoints; - delete scenery; - //delete tile_mgr; // Don't delete tile manager yet, because loader thread problems - delete io; - delete fontcache; + delete acmodel; + delete model_mgr; + delete channel_options_list; + delete initial_waypoints; + delete tile_mgr; + delete scenery; + delete io; + delete fontcache; delete navlist; delete loclist; delete gslist; delete dmelist; - delete mkrlist; delete tacanlist; delete carrierlist; delete channellist; - delete fixlist; delete airwaynet; delete multiplayer_mgr; - - delete props; } // set the fg_root path void FGGlobals::set_fg_root (const string &root) { fg_root = root; - + // append /data to root if it exists SGPath tmp( fg_root ); tmp.append( "data" ); tmp.append( "version" ); if ( ulFileExists( tmp.c_str() ) ) { fg_root += "/data"; + SG_LOG(SG_GENERAL, SG_WARN, "Warning: changing bad FG_ROOT/--fg-root to '" + << fg_root << '\''); } - fgSetString("/sim/fg-root", fg_root.c_str()); + // remove /sim/fg-root before writing to prevent hijacking + SGPropertyNode *n = fgGetNode("/sim", true); + n->removeChild("fg-root", 0, false); + n = n->getChild("fg-root", 0, true); + n->setStringValue(fg_root.c_str()); + n->setAttribute(SGPropertyNode::WRITE, false); } void FGGlobals::set_fg_scenery (const string &scenery) { @@ -272,7 +265,6 @@ FGGlobals::get_event_mgr () const void FGGlobals::saveInitialState () { - delete initial_state; initial_state = new SGPropertyNode(); if (!copyProperties(props, initial_state))