]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/globals.cxx
Fix for the fix: check for a viewer.
[flightgear.git] / src / Main / globals.cxx
index c083f326f965b631906ea49f8a280c3571a8e8ca..fb3a35480c044c8d6e5cafa3d993526582a01126 100644 (file)
@@ -27,6 +27,9 @@
 #include <boost/foreach.hpp>
 #include <algorithm>
 
+#include <osgViewer/Viewer>
+#include <osgDB/Registry>
+
 #include <simgear/structure/commands.hxx>
 #include <simgear/misc/sg_path.hxx>
 #include <simgear/misc/sg_dir.hxx>
@@ -209,6 +212,14 @@ FGGlobals::~FGGlobals()
     subsystem_mgr->remove("model-manager");
     _tile_mgr.clear();
 
+    // don't cancel the pager until after shutdown, since AIModels (and
+    // potentially others) can queue delete requests on the pager.
+    if (renderer->getViewer() && renderer->getViewer()->getDatabasePager()) {
+        renderer->getViewer()->getDatabasePager()->cancel();
+        renderer->getViewer()->getDatabasePager()->clear();
+    }
+    osgDB::Registry::instance()->clearObjectCache();
+    
     // renderer touches subsystems during its destruction
     set_renderer(NULL);
     _scenery.clear();