diff --git a/include/osgProducer/SceneHandler b/include/osgProducer/SceneHandler index e7bb8857f..1b12a2ba4 100644 --- a/include/osgProducer/SceneHandler +++ b/include/osgProducer/SceneHandler @@ -18,6 +18,9 @@ class OSGPRODUCER_EXPORT SceneHandler : public Producer::Camera::SceneHandler, p SceneHandler( osg::DisplaySettings *ds = NULL); + /// override the init method to force it be run one at a time. + virtual void init(); + void cull(Producer::Camera &cam); void draw(Producer::Camera &); diff --git a/src/osgProducer/SceneHandler.cpp b/src/osgProducer/SceneHandler.cpp index c5bba4a0e..1be113a9b 100644 --- a/src/osgProducer/SceneHandler.cpp +++ b/src/osgProducer/SceneHandler.cpp @@ -3,6 +3,7 @@ //as published by the Free Software Foundation. #include +#include using namespace osgUtil; using namespace osgProducer; @@ -14,8 +15,28 @@ SceneHandler::SceneHandler( osg::DisplaySettings *ds = NULL) : pm = new osg::RefMatrix; } +void SceneHandler::init() +{ + static Producer::Mutex mutex; + osg::notify(osg::INFO)<<"entering "<set(cam.getProjectionMatrix()); mm->set(cam.getPositionAndAttitudeMatrix()); setProjectionMatrix( pm.get() ); @@ -28,11 +49,24 @@ void SceneHandler::cull(Producer::Camera &cam) setViewport( x, y, w, h ); SceneView::cull(); + +// osg::notify(osg::INFO)<<" done "<