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 osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org