diff --git a/include/osgViewer/ViewerEventHandlers b/include/osgViewer/ViewerEventHandlers index b71bdbf9e..23b879705 100644 --- a/include/osgViewer/ViewerEventHandlers +++ b/include/osgViewer/ViewerEventHandlers @@ -100,6 +100,8 @@ class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler osg::Camera* getCamera() { return _camera.get(); } const osg::Camera* getCamera() const { return _camera.get(); } + virtual void collectWhichCamerasToRenderStatsFor(osgViewer::ViewerBase* viewer, osgViewer::ViewerBase::Cameras& cameras); + virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); /** Get the keyboard and mouse usage of this manipulator.*/ diff --git a/src/osgViewer/Renderer.cpp b/src/osgViewer/Renderer.cpp index dc8069ca4..b2b2d7ebe 100644 --- a/src/osgViewer/Renderer.cpp +++ b/src/osgViewer/Renderer.cpp @@ -556,6 +556,15 @@ void Renderer::updateSceneView(osgUtil::SceneView* sceneView) _startTick = view->getStartTick(); if (state) state->setStartTick(_startTick); } + else + { + osgViewer::GraphicsWindow* gw = dynamic_cast(context); + if (gw) + { + _startTick = gw->getEventQueue()->getStartTick(); + if (state) state->setStartTick(_startTick); + } + } } void Renderer::compile() diff --git a/src/osgViewer/StatsHandler.cpp b/src/osgViewer/StatsHandler.cpp index 2a908a93d..721d2aa10 100644 --- a/src/osgViewer/StatsHandler.cpp +++ b/src/osgViewer/StatsHandler.cpp @@ -54,6 +54,11 @@ StatsHandler::StatsHandler(): _camera->setProjectionResizePolicy(osg::Camera::FIXED); } +void StatsHandler::collectWhichCamerasToRenderStatsFor(osgViewer::ViewerBase* viewer, osgViewer::ViewerBase::Cameras& cameras) +{ + if (viewer) viewer->getCameras(cameras); +} + bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) { @@ -89,7 +94,7 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap if (_statsType==LAST) _statsType = NO_STATS; osgViewer::ViewerBase::Cameras cameras; - viewer->getCameras(cameras); + collectWhichCamerasToRenderStatsFor(viewer, cameras); switch(_statsType) { @@ -1081,7 +1086,7 @@ void StatsHandler::setUpScene(osgViewer::ViewerBase* viewer) // collect all the relevant cameras ViewerBase::Cameras validCameras; - viewer->getCameras(validCameras); + collectWhichCamerasToRenderStatsFor(viewer, validCameras); ViewerBase::Cameras cameras; for(ViewerBase::Cameras::iterator itr = validCameras.begin();