// execute events from the vector for(auto& rpCandidate : aToBeExecutedList)
{ // trigger event. This may re-insert the event to the scheduler again
rpCandidate->Trigger(mnTime);
}
}
void Scheduler::checkTimeout()
{ // re-start or stop timer according to event list if(!IsPaused() && !mvEvents.empty())
{
mnDeltaTime = mvEvents.front()->GetTime() - mnTime;
// reset event time points for (auto & rEvent : mvEvents)
{
rEvent->SetTime(nTime);
}
if(!IsPaused())
{ // without delta time, init events by triggering them. This will invalidate // painted objects and add them to the scheduler again
mnDeltaTime = 0;
triggerEvents();
checkTimeout();
}
}
void Scheduler::InsertEvent(Event& rNew)
{ // insert maintaining time ordering auto it = std::find_if(mvEvents.begin(), mvEvents.end(),
[&rNew](const Event* pEvent) { return rNew.GetTime() < pEvent->GetTime(); });
mvEvents.insert(it, &rNew);
checkTimeout();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.