From 91ab187ee1ffccf2c17957c2ae945d41f9468f35 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 15 Feb 2007 01:45:44 +0000 Subject: [PATCH] Added checks into Viewer set up of Camera stats so that stats are reused if already present. Added use of ref_ptr into StatsHandler's callbacks --- src/osgViewer/StatsHandler.cpp | 42 +++++++++++++++++----------------- src/osgViewer/Viewer.cpp | 4 ++-- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/osgViewer/StatsHandler.cpp b/src/osgViewer/StatsHandler.cpp index 65acb2993..34dde7022 100644 --- a/src/osgViewer/StatsHandler.cpp +++ b/src/osgViewer/StatsHandler.cpp @@ -245,13 +245,13 @@ struct TextDrawCallback : public virtual osg::Drawable::DrawCallback text->drawImplementation(renderInfo); } - osg::Stats* _stats; - std::string _attributeName; - int _frameDelta; - bool _averageInInverseSpace; - double _multiplier; - mutable char _tmpText[128]; - mutable osg::Timer_t _tickLastUpdated; + osg::ref_ptr _stats; + std::string _attributeName; + int _frameDelta; + bool _averageInInverseSpace; + double _multiplier; + mutable char _tmpText[128]; + mutable osg::Timer_t _tickLastUpdated; }; struct BlockDrawCallback : public virtual osg::Drawable::DrawCallback @@ -299,14 +299,14 @@ struct BlockDrawCallback : public virtual osg::Drawable::DrawCallback drawable->drawImplementation(renderInfo); } - StatsHandler* _statsHandler; - float _xPos; - osg::Stats* _viewerStats; - osg::Stats* _stats; - std::string _beginName; - std::string _endName; - int _frameDelta; - int _numFrames; + StatsHandler* _statsHandler; + float _xPos; + osg::ref_ptr _viewerStats; + osg::ref_ptr _stats; + std::string _beginName; + std::string _endName; + int _frameDelta; + int _numFrames; }; osg::Geometry* StatsHandler::createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks) @@ -377,12 +377,12 @@ struct FrameMarkerDrawCallback : public virtual osg::Drawable::DrawCallback drawable->drawImplementation(renderInfo); } - StatsHandler* _statsHandler; - float _xPos; - osg::Stats* _viewerStats; - std::string _endName; - int _frameDelta; - int _numFrames; + StatsHandler* _statsHandler; + float _xPos; + osg::ref_ptr _viewerStats; + std::string _endName; + int _frameDelta; + int _numFrames; }; diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index 4e07215d6..886694724 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -1441,7 +1441,7 @@ void Viewer::setUpRenderingSupport() ++citr) { osg::Camera* camera = *citr; - camera->setStats(new osg::Stats("Camera")); + if (!camera->getStats()) camera->setStats(new osg::Stats("Camera")); bool localCamera = std::find(localCameras.begin(),localCameras.end(),camera) != localCameras.end(); if (localCamera) @@ -1509,7 +1509,7 @@ void Viewer::setUpRenderingSupport() { osg::Camera* camera = *citr; - camera->setStats(new osg::Stats("Camera")); + if (!camera->getStats()) camera->setStats(new osg::Stats("Camera")); osgUtil::SceneView* sceneView = new osgUtil::SceneView; _sceneViews.push_back(sceneView);