My code works without calling OpenThreads::Thread::Init() in r7330. I appreciate your attention. Abe
Robert Osfield wrote: > Hi Abe, > > 've added a Thread::Init() call into > OpenThreads::SetProcessorAffinityOfCurrentThread(). This should > hopefully solve the crash without you need to resort to adding a > OpenThreads::Thread::Init() to your own application. > > Could you do check out the svn version of the OSG, and revert your own > adding of Init() and let me know how you get on. > > Robert. > > On 8/31/07, Abe Stephens <[EMAIL PROTECTED]> wrote: > >> I resolved this issue by calling OpenThreads::Thread::Init() during >> program initialization (not sure why the glut example didn't need to do >> this). My application is now successfully using >> setUpViewerAsEmbeddedInWindow in combination with wxpython using a >> rather modified version of Hartmut Seichter's osgBindings swig package. >> >> Thanks- >> Abe >> >> Abe Stephens wrote: >> >>> Thanks, I appreciate the help. osgViewer::Viewer produces a segfault in >>> libOpenThreads: >>> >>> #0 0xb5dc577d in OpenThreads::Thread::setProcessorAffinity >>> (this=0x80d1d78, cpunum=0) >>> at >>> >>> /local/abe/build-piglet/package/OpenSceneGraph/src/OpenThreads/pthreads/PThread.c++:505 >>> #1 0xb5dc589c in OpenThreads::SetProcessorAffinityOfCurrentThread >>> (cpunum=0) >>> at >>> >>> /local/abe/build-piglet/package/OpenSceneGraph/src/OpenThreads/pthreads/PThread.c++:922 >>> #2 0xb4370771 in osgViewer::Viewer::setUpThreading (this=0x88ef878) >>> at >>> >>> /local/abe/build-piglet/package/OpenSceneGraph/src/osgViewer/Viewer.cpp:898 >>> #3 0xb4370e16 in osgViewer::Viewer::realize (this=0x88ef878) at >>> >>> /local/abe/build-piglet/package/OpenSceneGraph/src/osgViewer/Viewer.cpp:1794 >>> #4 0xb4dada46 in _wrap_Viewer_realize (args=0x87eec4c) at >>> >>> /local/abe/build-piglet/package/osgBindings/build-gcc/src/osgViewerPYTHON_wrap.cxx:10607 >>> >>> Further inspection of the call stack revealed that when executed via >>> glut Thread::CurrentThread() on line 919 of PThread.c++ returns zero >>> while when executed in the wx program returns a bogus pointer. >>> >>> The function is invoked as: >>> >>> self.viewer = osgViewer.Viewer() >>> pos = self.GetRect(); >>> self.viewer.setUpViewerAsEmbeddedInWindow( pos.x, pos.y, pos.width, >>> pos.height ) >>> self.viewer.setThreadingModel(osgViewer.Viewer.SingleThreaded) >>> self.viewer.realize() # Causes segfault above. >>> >>> Do you have any idea why this might be the case? I appreciate that this >>> problem is likely related to an interaction with python, but any advice >>> would be appreciated. >>> >>> -Thanks >>> Abe >>> >>> Robert Osfield wrote: >>> >>> >>>> Hi Abe, >>>> >>>> I don't know what might be up given your code fragment. SceneView is >>>> lower level that osgViewer::Viewer, so does require more care with >>>> setup, and its less powerful.... >>>> >>>> Personally I wouldn't recommend using SceneView in your own code, just >>>> use osgViewer::Viewer and its embedded mode if you need to integrate >>>> with an existing window. It's a waste of our time to struggle on >>>> trying to get SceneView do things that Viewer already does out of the >>>> box perfectly. >>>> >>>> Robert. >>>> >>>> On 8/30/07, Abe Stephens <[EMAIL PROTECTED]> wrote: >>>> >>>> >>>> >>>>> Hi, I'm attempting to load an animated .osg scene exported from blender >>>>> into an existing application with minimal fuss. The existing application >>>>> has a basic glut front end and a more useful wxpython front end. I'm >>>>> having trouble getting animation to work properly: >>>>> >>>>> In the glut application using osgViewer::Viewer animation works when >>>>> I call: >>>>> >>>>> viewer->advance() >>>>> viewer->updateTraversal() >>>>> viewer->renderingTraversal() >>>>> >>>>> However in the wxpython application, using osgUtil::SceneView animation >>>>> does not work. I am calling: >>>>> >>>>> frameStamp = osg.FrameStamp() >>>>> time = >>>>> osg.Timer.instance().delta_s(self.start_tick,osg.Timer.instance >>>>> ().tick()) >>>>> frameStamp.setReferenceTime(time) >>>>> frameStamp.setSimulationTime(time) >>>>> frameStamp.setFrameNumber(self.framecounter) >>>>> self.framecounter += 1 >>>>> >>>>> self.sceneviewer.setFrameStamp( frameStamp ) >>>>> self.sceneviewer.update() >>>>> self.sceneviewer.cull() >>>>> self.sceneviewer.draw() >>>>> >>>>> I noticed that unlike osgViewer::Viewer, SceneView::update() does not >>>>> appear to apply the update visitor to the scene data, only to the >>>>> camera. >>>>> >>>>> Any idea what I am doing wrong? >>>>> >>>>> Thanks- >>>>> Abe >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> osg-users mailing list >>>>> [email protected] >>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>>> >>>>> >>>>> >>>>> >>>> _______________________________________________ >>>> osg-users mailing list >>>> [email protected] >>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>> >>>> >>>> >>> _______________________________________________ >>> osg-users mailing list >>> [email protected] >>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>> >>> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

