]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/main.cxx
Linux needs stdarg.h for va_args
[flightgear.git] / src / Main / main.cxx
index 79236263226de879a047c767d8303466249ffe3d..3f82429bf1c7f39d6b6718215bf5a4dc934607a7 100644 (file)
@@ -128,17 +128,34 @@ static void fgIdleFunction ( void ) {
     } else if ( idle_state == 2 ) {
         
         // start TerraSync up now, so it can be synchronizing shared models
-        // and airports data in parallel with a nav-cahce rebuild. 
+        // and airports data in parallel with a nav-cache rebuild.
         SGPath tsyncCache(globals->get_fg_home());
         tsyncCache.append("terrasync-cache.xml");
+        
+        // wipe the cache file if requested
+        if (flightgear::Options::sharedInstance()->isOptionSet("restore-defaults")) {
+            SG_LOG(SG_GENERAL, SG_INFO, "restore-defaults requested, wiping terrasync update cache at " <<
+                   tsyncCache);
+            if (tsyncCache.exists()) {
+                tsyncCache.remove();
+            }
+        }
+        
         fgSetString("/sim/terrasync/cache-path", tsyncCache.c_str());
         
-        simgear::SGTerraSync* terra_sync = new simgear::SGTerraSync(globals->get_props());
+        simgear::SGTerraSync* terra_sync = new simgear::SGTerraSync();
+        terra_sync->setRoot(globals->get_props());
         globals->add_subsystem("terrasync", terra_sync);
         
+        
+        
         terra_sync->bind();
         terra_sync->init();
         
+        // add the terrasync root as a data path so data can be retrieved from it
+        std::string terraSyncDir(fgGetString("/sim/terrasync/scenery-dir"));
+        globals->append_data_path(terraSyncDir);
+        
         idle_state++;
         fgSplashProgress("loading-nav-dat");
 
@@ -375,6 +392,8 @@ int fgMainInit( int argc, char **argv ) {
     
     // pass control off to the master event handler
     int result = fgOSMainLoop();
+    frame_signal.clear();
+    fgOSCloseWindow();
     
     // clean up here; ensure we null globals to avoid
     // confusing the atexit() handler