Hello, everyone, I've been using OSG for a little bit for some in-house tools. I'm trying to add a new Drawable subclass, but am having trouble understanding how the osgViewer's multithreading works (I'm using the default threading model, which appears to create one background thread for rendering).
In short, when osgViewer gets destructed at the end of my program (or rather, at the end of the life of the object that contains it), the OSG debug printouts claim: "Waiting for OperationsThread to cancel 0x5f6580" This thread is busy calling the drawImplementation of my drawable (which, as it happens, has already been deleted by this point!) Presumably, this was set in motion by a previous call to Viewer::frame(). My question is, how do you guys normally deal with data (scene graph, geometry, text, whatever) being modified on the main thread while Viewer is apparently busy rendering the same data? Having looked at a lot of the other drawables included in OSG, I don't see how the "double buffering" scheme works -- how is that any of the scene graph or other geometry data get updated without creating a race condition like this? Viewer seems to include some reference to a "double buffering" object -- but none of the other drawables appear to have any code to handle threading. What's the trick here? What can/can't one do from with the drawImplementation() method in order to remain thread safe? Thanks in advance for any tips, Adam C. _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

