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

@@ -62,6 +62,34 @@ bool EventQueue::takeEvents(Events& events)
}
}
bool EventQueue::takeEvents(Events& events, double cutOffTime)
{
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_eventQueueMutex);
if (!_eventQueue.empty())
{
bool eventsTaken = false;
Events::iterator itr = _eventQueue.begin();
for(;
itr != _eventQueue.end() && ((*itr)->getTime() <= cutOffTime);
++itr)
{
events.push_back(*itr);
eventsTaken = true;
}
if (eventsTaken)
{
_eventQueue.erase(_eventQueue.begin(), itr);
}
return eventsTaken;
}
else
{
return false;
}
}
bool EventQueue::copyEvents(Events& events) const
{
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_eventQueueMutex);