Hi Wang Rui, multithreading is stable on my ubuntu 11.04, Radeon 5470. More precisely, just CullDrawThreadPerContext. I am using it almost for a month and it is stable. If I remember it correctly, the biggest problem was with widget hide event that comes for example on windows minimize. At that moment, Qt is doing glFinish before hiding the widget. And that definitely does not work, as main thread does not hold current context because rendering is in progress in other thread. I workarounded it in osgQt, however, I feel like Qt needs to be cleaned to fully support multithreaded rendering.
Anyway, osgQt is stable for me except one case that I found: I can not change threading model back to singlethreaded and return it back later. I wanted this to query some information from OpenGL (Renderer, etc.) and to avoid some racing, etc. Unfortunately, new starting of threads does not work at my machine. So, once set, I am never changing threading model. As I already wrote, I am using CullDrawThreadPerContext and if I remember correctly, other models were not stable, unfortunately. So, these are the pieces that I gathered. Feel free to share your own findings. It would be nice to get all threading models running properly. Unfortunately, it may include Qt debugging and fixes. John > ------------ Original message ------------ > From: Wang Rui <[email protected]> > Subject: Re: [osg-submissions] improved osgQt::GraphicsWindowQt > Date: 14. 5. 2011 15:27:33 > ---------------------------------------- > Hi John, > > Good to see the Qt integration improved. Just what to know: is the > multithreading problem under Linux solved now? I'm confused by it for > a long time. :-) > > Thanks, > > Wang Rui > > 2011/5/14 PC John <[email protected]>: > > Hi Robert, > > > > I have improved GraphicsWindowQt: > > > > - renamed osgQt::GraphWidget to osgQt::GLWidget > > as it better fits to Qt naming (osgQt::GLWidget is derived from QGLWidget > > while recent GraphWidget... it is unclear, maybe QGraphicsView, > > QGraphicsScene,....) > > - added the code to properly manage ON_DEMAND rendering scheme > > (involves osgQt::setViewer() and internal HeartBeat class) > > - added forward key events functionality. It allows to not eat the key > > events by GLWidget, but it forwards them to Qt processing as well. > > - destroying GLWidget before GraphicsWindowQt and vice versa does not > > crash the application > > - it is possible to request particular QGLFormat in GLWidget constructor > > - added QtWindowingSystem class > > - multithread OSG rendering improvements/fixes > > > > John > > > > _______________________________________________ > > osg-submissions mailing list > > [email protected] > > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegra > > ph.org > > _______________________________________________ > osg-submissions mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph > .org _______________________________________________ osg-submissions mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
