Малък фикс в TimerMgr
Проблем: Когато таймера е стопиран в предишния цикъл на main loop-a на Engine чрез TimerClient::stopTimer() и изтече в този - ще се генерира onTimerTimeout с Id на таймер който вече е спрян, също така ще намали броя на итерации в цикъл
for(auto& [id, data] : m_TimerMap) {
data.m_Remaining -= elapsed_ms;
if (0 > data.m_Remaining) {
onTimerTimeout(id, data);
}
}
Вариант 1:
Предлагам малка промяна в реда на TimerMgr::process() метода - removeTimers() да се премети в началото на фунията.
Вариант 2:
В stopTimer и в detachTimerClient да се извиква removeTimers() преди края на методите.
Да, абасолютно си прав!
Супер сте, колеги :)