diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index 5eca20b25..d4773ac5b 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -228,6 +228,9 @@ struct ViewerDoubleBufferedRenderingOperation : public osg::Operation, public Vi _done(false), _databasePager(databasePager) { + _lockHeld[0] = false; + _lockHeld[1] = false; + _sceneView[0] = sv0; _sceneView[0]->getCullVisitor()->setDatabaseRequestHandler(_databasePager.get()); @@ -239,7 +242,11 @@ struct ViewerDoubleBufferedRenderingOperation : public osg::Operation, public Vi // lock the mutex for the current cull SceneView to // prevent the draw traversal from reading from it before the cull traversal has been completed. - if (!_graphicsThreadDoesCull) _mutex[_currentCull].lock(); + if (!_graphicsThreadDoesCull) + { + _mutex[_currentCull].lock(); + _lockHeld[_currentCull] = true; + } // osg::notify(osg::NOTICE)<<"constructed"< _sceneView[2]; int _frameNumber[2]; osg::observer_ptr _databasePager;