]> git.mxchange.org Git - flightgear.git/commitdiff
Remove indirection on viewer draw/resize code-paths.
authorJames Turner <zakalawe@mac.com>
Sun, 18 Sep 2011 14:05:05 +0000 (15:05 +0100)
committerJames Turner <zakalawe@mac.com>
Wed, 21 Sep 2011 16:13:53 +0000 (17:13 +0100)
src/Main/FGEventHandler.cxx
src/Main/FGEventHandler.hxx
src/Main/fg_os_common.cxx
src/Main/fg_os_osgviewer.cxx
src/Main/main.cxx
src/Main/renderer.cxx
src/Main/renderer.hxx

index e43f4b8aba552cb83225c4e526c90c7572c9bd5f..f6fc75c76be0d81f615bb72100b90c7a7c0d055d 100644 (file)
@@ -12,6 +12,7 @@
 #include "CameraGroup.hxx"
 #include "FGEventHandler.hxx"
 #include "WindowSystemAdapter.hxx"
+#include "renderer.hxx"
 
 #if !defined(X_DISPLAY_MISSING)
 #define X_DOUBLE_SCROLL_BUG 1
@@ -29,8 +30,6 @@ const int printStatsKey = 2;
 
 FGEventHandler::FGEventHandler() :
     idleHandler(0),
-    drawHandler(0),
-    windowResizeHandler(0),
     keyHandler(0),
     mouseClickHandler(0),
     mouseMotionHandler(0),
@@ -233,8 +232,8 @@ bool FGEventHandler::handle(const osgGA::GUIEventAdapter& ea,
         return true;
     case osgGA::GUIEventAdapter::RESIZE:
         CameraGroup::getDefault()->resized();
-        if (resizable && windowResizeHandler)
-            (*windowResizeHandler)(ea.getWindowWidth(), ea.getWindowHeight());
+        if (resizable)
+          globals->get_renderer()->resize(ea.getWindowWidth(), ea.getWindowHeight());
         return true;
      case osgGA::GUIEventAdapter::CLOSE_WINDOW:
     case osgGA::GUIEventAdapter::QUIT_APPLICATION:
index 652b2b74dc4bf305fa5bfbef8b1ed1ff6a2a6b64..4be0caf2135676f0d87c62cad76a61aa2b77a529 100644 (file)
@@ -34,26 +34,6 @@ public:
            return idleHandler;
        }
 
-    void setDrawHandler(fgDrawHandler drawHandler)
-       {
-           this->drawHandler = drawHandler;
-       }
-
-    fgDrawHandler getDrawHandler() const
-       {
-           return drawHandler;
-       }
-
-    void setWindowResizeHandler(fgWindowResizeHandler windowResizeHandler)
-       {
-           this->windowResizeHandler = windowResizeHandler;
-       }
-    
-    fgWindowResizeHandler getWindowResizeHandler() const
-       {
-           return windowResizeHandler;
-       }
-
     void setKeyHandler(fgKeyHandler keyHandler)
        {
            this->keyHandler = keyHandler;
@@ -103,8 +83,6 @@ public:
 protected:
     osg::ref_ptr<osg::Node> _node;
     fgIdleHandler idleHandler;
-    fgDrawHandler drawHandler;
-    fgWindowResizeHandler windowResizeHandler;
     fgKeyHandler keyHandler;
     fgMouseClickHandler mouseClickHandler;
     fgMouseMotionHandler mouseMotionHandler;
index 1df935139b3360b7bb6378b56d7925a527295fcf..cba760bb91e02ffc698406c8a3a797c55146bb39 100644 (file)
@@ -39,16 +39,6 @@ void fgRegisterIdleHandler(fgIdleHandler func)
     globals->get_renderer()->getEventHandler()->setIdleHandler(func);
 }
 
-void fgRegisterDrawHandler(fgDrawHandler func)
-{
-    globals->get_renderer()->getEventHandler()->setDrawHandler(func);
-}
-
-void fgRegisterWindowResizeHandler(fgWindowResizeHandler func)
-{
-    globals->get_renderer()->getEventHandler()->setWindowResizeHandler(func);
-}
-
 void fgRegisterKeyHandler(fgKeyHandler func)
 {
     globals->get_renderer()->getEventHandler()->setKeyHandler(func);
index 357661be7861f0fffd77b8aceb97d81a9dcac869..764f90735cbd14772ebc9bd17156c8d6338b2c59 100644 (file)
@@ -279,11 +279,9 @@ int fgOSMainLoop()
         viewer->realize();
     while (!viewer->done()) {
         fgIdleHandler idleFunc = manipulator->getIdleHandler();
-        fgDrawHandler drawFunc = manipulator->getDrawHandler();
         if (idleFunc)
             (*idleFunc)();
-        if (drawFunc)
-            (*drawFunc)();
+        globals->get_renderer()->update(true);
         viewer->frame();
     }
     
index 6fa94dc9bc541dc8b5625535cb864e50b94c4cf2..9a40613a3cf833587cf36f759a889ef3ebe5edfe 100644 (file)
@@ -551,11 +551,6 @@ static void fgIdleFunction ( void ) {
     }
 }
 
-static void fgWinResizeFunction(int width, int height)
-{
-    globals->get_renderer()->resize(width, height);
-}
-
 static void upper_case_property(const char *name)
 {
     using namespace simgear;
@@ -646,9 +641,7 @@ int fgMainInit( int argc, char **argv ) {
     fgOSInit(&argc, argv);
     _bootstrap_OSInit++;
 
-    fgRegisterWindowResizeHandler( &fgWinResizeFunction );
     fgRegisterIdleHandler( &fgIdleFunction );
-    fgRegisterDrawHandler( &FGRenderer::update );
 
     // Initialize sockets (WinSock needs this)
     simgear::Socket::initSockets();
index 3d40cf4c1b3dd74813251622c742a72c479d305f..6aa796d698a610302bf9f2f1d46c2f878d7ca67e 100644 (file)
@@ -595,12 +595,6 @@ FGRenderer::setupView( void )
     stateSet->setAttributeAndModes(new osg::Program, osg::StateAttribute::ON);
 }
 
-void
-FGRenderer::update()
-{
-    globals->get_renderer()->update(true);
-}
-
 // Update all Visuals (redraws anything graphics related)
 void
 FGRenderer::update( bool refresh_camera_settings ) {
index 3f045fe0cb037bb625f681610e97b35ac8d87255..67b9ff9263cfee62ed7ae69f021c6a9957b32f34 100644 (file)
@@ -55,8 +55,7 @@ public:
     // touch window or camera settings.  This is useful for the tiled
     // renderer which needs to set the view frustum itself.
     void update( bool refresh_camera_settings);
-    static void update();
-
+  
     /** Just pick into the scene and return the pick callbacks on the way ...
      */
     bool pick( std::vector<SGSceneryPick>& pickList,