Fixed issue with events having a negative delta of time between them.

This commit is contained in:
Robert Osfield
2011-06-14 12:44:44 +00:00
parent 6a6c5bccda
commit 5b3eed5dce
4 changed files with 53 additions and 7 deletions

View File

@@ -584,6 +584,11 @@ void Viewer::advance(double simulationTime)
_frameStamp->setSimulationTime(simulationTime);
}
if (_eventQueue.valid())
{
_eventQueue->frame( getFrameStamp()->getReferenceTime() );
}
if (getViewerStats() && getViewerStats()->collectStats("frame_rate"))
{
// update previous frame stats
@@ -595,6 +600,7 @@ void Viewer::advance(double simulationTime)
getViewerStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime());
}
if (osg::Referenced::getDeleteHandler())
{
osg::Referenced::getDeleteHandler()->flush();
@@ -607,6 +613,7 @@ void Viewer::eventTraversal()
{
if (_done) return;
double cutOffTime = _frameStamp->getReferenceTime();
double beginEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
// OSG_NOTICE<<"Viewer::frameEventTraversal()."<<std::endl;
@@ -645,7 +652,7 @@ void Viewer::eventTraversal()
gw->checkEvents();
osgGA::EventQueue::Events gw_events;
gw->getEventQueue()->takeEvents(gw_events);
gw->getEventQueue()->takeEvents(gw_events, cutOffTime);
osgGA::EventQueue::Events::iterator itr;
for(itr = gw_events.begin();
@@ -791,9 +798,7 @@ void Viewer::eventTraversal()
// OSG_NOTICE<<"mouseEventState Xmin = "<<eventState->getXmin()<<" Ymin="<<eventState->getYmin()<<" xMax="<<eventState->getXmax()<<" Ymax="<<eventState->getYmax()<<std::endl;
_eventQueue->frame( getFrameStamp()->getReferenceTime() );
_eventQueue->takeEvents(events);
_eventQueue->takeEvents(events, cutOffTime);
#if 0