From 64b8e3062f20b77b42aaa9a38052208f6d72204d Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 27 Jun 2007 20:34:29 +0000 Subject: [PATCH] Added temporary reset of the RenderLeaf pointer for any internal calls to other graphics contexts. --- src/osgUtil/RenderStage.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/osgUtil/RenderStage.cpp b/src/osgUtil/RenderStage.cpp index 8a79e9207..4b954acb2 100644 --- a/src/osgUtil/RenderStage.cpp +++ b/src/osgUtil/RenderStage.cpp @@ -844,6 +844,8 @@ void RenderStage::draw(osg::RenderInfo& renderInfo,RenderLeaf*& previous) osg::GraphicsContext* useContext = callingContext; osg::OperationsThread* useThread = 0; osg::RenderInfo useRenderInfo(renderInfo); + + RenderLeaf* saved_previous = previous; if (_graphicsContext.valid() && _graphicsContext != callingContext) { @@ -863,7 +865,11 @@ void RenderStage::draw(osg::RenderInfo& renderInfo,RenderLeaf*& previous) useState->setDynamicObjectCount(state.getDynamicObjectCount()); useState->setDynamicObjectRenderingCompletedCallback(state.getDynamicObjectRenderingCompletedCallback()); - if (!useThread) useContext->makeCurrent(); + if (!useThread) + { + previous = 0; + useContext->makeCurrent(); + } } if (_camera && _camera->getPreDrawCallback()) @@ -934,6 +940,9 @@ void RenderStage::draw(osg::RenderInfo& renderInfo,RenderLeaf*& previous) if (callingContext && useContext != callingContext) { // restore the graphics context. + + previous = saved_previous; + callingContext->makeCurrent(); }