Hi-osg-users, Last post because sometimes I write too much ;-)
The ideal solution was for me to not forget to call osgViewer::CompositeViewer::realize() after adding a new view... Sorry to bother you. 2009/1/19 Alexandre Amalric <[email protected]> > Hi osg-users, > > For those who are interested I find the solution, before calling for the > first time osgViewer::CompositeViewer::frame() I call > osgViewer::CompositeViewer::setReferenceTime() like : > > pCompoViewer->setReferenceTime(osg::Timer::instance()->time_s()); > > So I can now use the AnimationPathManipulator, no more need to derive this > class. > > 2009/1/19 Alexandre Amalric <[email protected]> > > Hi Ralph, >> >> I took the time to convert my program to call beginthreadex instead of >> CreateThread, but the bug stay the same. >> >> I think it's because of my PeekMessage loop because it's the only >> difference between the MFC sample and my corresponding part of code. >> >> I think I'm gonna keep my derived class from AnimationPathManipulator >> calling osg::Timer::instance()->time_s() instead of ea.getTime(), because I >> don't see any other solution. >> >> >> 2009/1/19 Ralph Kern <[email protected]> >> >> Hi Alexandre, >>> >>> I haven't dug in deeply in your problem, but I guess it stems from the >>> following remark from the CreateThread() documentation: >>> >>> > A thread that uses functions from the C run-time libraries should use >>> the beginthread and endthread C run-time functions for thread management >>> rather than CreateThread and ExitThread. Failure to do so results in small >>> memory leaks when ExitThread is called. >>> > >>> >>> This in fact means you cannot reliably use any function in your thread >>> which might call a c run time lib function. >>> >>> Try to rewrite your thread initialization to use _beginthread instead. >>> >>> regards Ralph >>> >>> Alexandre Amalric schrieb: >>> > Hi osg-users, >>> > >>> > I'm developping an application under MFC and I started from the MFC >>> > sample to begin with but with a little difference in thread management. >>> > >>> > My rendering thread isn't create with _beginthread but with >>> CreateThread >>> > wich launch a CWinThread derived class with a message pump, I want it >>> to >>> > be a UI thread and not a worker thread. >>> > >>> > So I don't know if I'm clear but my problem is that when I play a path >>> > and I press 'p' key to pause, the camera isn't at the correct position. >>> > In fact I decided to derive osgGA::AnimationPathManipulator class and >>> to >>> > replace all ea.getTime() by fTimeSec ( double fTimeSec = >>> > osg::Timer::instance()->time_s();) in function handle(const >>> > osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us); >>> > >>> > With this method it works perfectly, so I assume that when creating a >>> > rendering thread responsible to call viewer::frame() with CreateThread >>> > the ea.getTime() isn't the correct time... >>> > >>> > Can someone explain me why we use ea.getTime() and not >>> > osg::Timer::instance()->time_s() ? >>> > >>> > >>> > -- >>> > Alexandre AMALRIC Ingénieur R&D >>> > =================================== >>> > PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille >>> > http://www.pixxim.fr >>> > >>> >>> _______________________________________________ >>> osg-users mailing list >>> [email protected] >>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>> >> >> >> >> -- >> Alexandre AMALRIC Ingénieur R&D >> =================================== >> PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille >> http://www.pixxim.fr >> > > > > -- > Alexandre AMALRIC Ingénieur R&D > =================================== > PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille > http://www.pixxim.fr > -- Alexandre AMALRIC Ingénieur R&D =================================== PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille http://www.pixxim.fr
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

