Hi all,
I am having a crash with a CompositeViewer setup on Windows XP (VS 8 Sp1, 1
GeForce card, SVN trunk). It is composed of 2 windows into 1 screen, with
one context for each window. My threading model is DrawThreadPerContext.
The crash takes place into OperationQueue, the _operations list has a
corrupted element : the last one (the SwapBuffersOperation). The two
graphics threads have their OperationQueue corrupted.
So it crash line 75 into OperationThread.cpp because
_currentOperationIterator points to a corrupted pointer.
About my app, it just load the cow.osg, nothing else.
Anyone have seen this problem before ? Or am I making something wrong on my
viewer setup (my code is below) ?
Thanks in advance !
osgViewer::CompositeViewer viewer;
osg::Node *root = osgDB::readNodeFile("cow.osg");
// upper window
{
// Traits
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new
osg::GraphicsContext::Traits;
traits->x = 300;
traits->y = 40;
traits->width = 600;
traits->height = 300;
traits->windowDecoration = true;
traits->doubleBuffer = true;
traits->sharedContext = 0;
// Graphic context
osg::ref_ptr<osg::GraphicsContext> gc =
osg::GraphicsContext::createGraphicsContext(traits.get());
osgViewer::View *view = new osgViewer::View;
GLenum buffer = traits->doubleBuffer
? GL_BACK : GL_FRONT;
viewer.addView(view);
view->getCamera()->setGraphicsContext(gc.get());
view->getCamera()->setViewport(new osg::Viewport(0,0, traits->width,
traits->height));
view->getCamera()->setDrawBuffer(buffer);
view->getCamera()->setReadBuffer(buffer);
view->setSceneData(root);
}
// lower window
{
// Traits
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new
osg::GraphicsContext::Traits;
traits->x = 300;
traits->y = 375;
traits->width = 600;
traits->height = 480;
traits->windowDecoration = true;
traits->doubleBuffer = true;
traits->sharedContext = 0;
// Graphic context
osg::ref_ptr<osg::GraphicsContext> gc =
osg::GraphicsContext::createGraphicsContext(traits.get());
osgViewer::View *view = new osgViewer::View;
GLenum buffer = traits->doubleBuffer
? GL_BACK : GL_FRONT;
viewer.addView(view);
view->getCamera()->setGraphicsContext(gc.get());
view->getCamera()->setViewport(new osg::Viewport(0,0, traits->width,
traits->height));
view->getCamera()->setDrawBuffer(buffer);
view->getCamera()->setReadBuffer(buffer);
view->setSceneData(root);
view->addEventHandler(new
osgGA::StateSetManipulator(view->getCamera()->getOrCreateStateSet()));
view->addEventHandler(new osgViewer::StatsHandler());
}
viewer.run();
return (0);
--
Serge Lages
http://www.tharsis-software.com
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org