]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/main.cxx
Bugfix: remove the (totally broken) skyblend option
[flightgear.git] / src / Main / main.cxx
index 26701f8a07575472645e7bcb9a65720a80b56695..40af6e292fb89605037f9107e61fc3c3fe366490 100644 (file)
@@ -37,6 +37,7 @@
 #include <simgear/canvas/VGInitOperation.hxx>
 #include <simgear/scene/model/modellib.hxx>
 #include <simgear/scene/material/matlib.hxx>
+#include <simgear/scene/material/Effect.hxx>
 #include <simgear/props/AtomicChangeListener.hxx>
 #include <simgear/props/props.hxx>
 #include <simgear/timing/sg_time.hxx>
 #include "fg_os.hxx"
 #include "fg_props.hxx"
 #include "positioninit.hxx"
+#include "screensaver_control.hxx"
 #include "subsystemFactory.hxx"
 #include "options.hxx"
 
+
 using namespace flightgear;
 
 using std::cerr;
@@ -299,7 +302,9 @@ static void upper_case_property(const char *name)
         else
             assert(t == props::STRING);
     }
-    p->addChangeListener(new FGMakeUpperCase);
+    SGPropertyChangeListener* muc = new FGMakeUpperCase;
+    globals->addListenerToCleanup(muc);
+    p->addChangeListener(muc);
 }
 
 // see http://code.google.com/p/flightgear-bugs/issues/detail?id=385
@@ -388,6 +393,20 @@ int fgMainInit( int argc, char **argv ) {
         return EXIT_SUCCESS;
     }
     
+    configResult = fgInitAircraft(false);
+    if (configResult == flightgear::FG_OPTIONS_ERROR) {
+        return EXIT_FAILURE;
+    } else if (configResult == flightgear::FG_OPTIONS_EXIT) {
+        return EXIT_SUCCESS;
+    }
+    
+    configResult = flightgear::Options::sharedInstance()->processOptions();
+    if (configResult == flightgear::FG_OPTIONS_ERROR) {
+        return EXIT_FAILURE;
+    } else if (configResult == flightgear::FG_OPTIONS_EXIT) {
+        return EXIT_SUCCESS;
+    }
+    
     // Initialize the Window/Graphics environment.
     fgOSInit(&argc, argv);
     _bootstrap_OSInit++;
@@ -412,11 +431,16 @@ int fgMainInit( int argc, char **argv ) {
     
     fgOutputSettings();
     
+    //try to disable the screensaver
+    fgOSDisableScreensaver();
+    
     // pass control off to the master event handler
     int result = fgOSMainLoop();
     frame_signal.clear();
     fgOSCloseWindow();
     
+    simgear::clearEffectCache();
+    
     // clean up here; ensure we null globals to avoid
     // confusing the atexit() handler
     delete globals;