From 227b3e469c5d062458b3fe1b0c429a54d25089e2 Mon Sep 17 00:00:00 2001 From: James Turner Date: Sun, 18 Sep 2011 15:05:05 +0100 Subject: [PATCH] Remove indirection on viewer draw/resize code-paths. --- src/Main/FGEventHandler.cxx | 7 +++---- src/Main/FGEventHandler.hxx | 22 ---------------------- src/Main/fg_os_common.cxx | 10 ---------- src/Main/fg_os_osgviewer.cxx | 4 +--- src/Main/main.cxx | 7 ------- src/Main/renderer.cxx | 6 ------ src/Main/renderer.hxx | 3 +-- 7 files changed, 5 insertions(+), 54 deletions(-) diff --git a/src/Main/FGEventHandler.cxx b/src/Main/FGEventHandler.cxx index e43f4b8ab..f6fc75c76 100644 --- a/src/Main/FGEventHandler.cxx +++ b/src/Main/FGEventHandler.cxx @@ -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: diff --git a/src/Main/FGEventHandler.hxx b/src/Main/FGEventHandler.hxx index 652b2b74d..4be0caf21 100644 --- a/src/Main/FGEventHandler.hxx +++ b/src/Main/FGEventHandler.hxx @@ -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 _node; fgIdleHandler idleHandler; - fgDrawHandler drawHandler; - fgWindowResizeHandler windowResizeHandler; fgKeyHandler keyHandler; fgMouseClickHandler mouseClickHandler; fgMouseMotionHandler mouseMotionHandler; diff --git a/src/Main/fg_os_common.cxx b/src/Main/fg_os_common.cxx index 1df935139..cba760bb9 100644 --- a/src/Main/fg_os_common.cxx +++ b/src/Main/fg_os_common.cxx @@ -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); diff --git a/src/Main/fg_os_osgviewer.cxx b/src/Main/fg_os_osgviewer.cxx index 357661be7..764f90735 100644 --- a/src/Main/fg_os_osgviewer.cxx +++ b/src/Main/fg_os_osgviewer.cxx @@ -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(); } diff --git a/src/Main/main.cxx b/src/Main/main.cxx index 6fa94dc9b..9a40613a3 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -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(); diff --git a/src/Main/renderer.cxx b/src/Main/renderer.cxx index 3d40cf4c1..6aa796d69 100644 --- a/src/Main/renderer.cxx +++ b/src/Main/renderer.cxx @@ -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 ) { diff --git a/src/Main/renderer.hxx b/src/Main/renderer.hxx index 3f045fe0c..67b9ff926 100644 --- a/src/Main/renderer.hxx +++ b/src/Main/renderer.hxx @@ -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& pickList, -- 2.39.5