From 820deb43347b5b1c648dcea04ab8dd067e4ca77f Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 19 Mar 2011 18:12:33 +0000 Subject: [PATCH] *Ctrl: TimerProc implementation changed to reschedule repeated event AFTER executing callback to avoid recursion for long processing git-svn-id: svn://ultimatepp.org/upp/trunk@3288 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/CtrlTimer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uppsrc/CtrlCore/CtrlTimer.cpp b/uppsrc/CtrlCore/CtrlTimer.cpp index 3fa99a69a..517645a2a 100644 --- a/uppsrc/CtrlCore/CtrlTimer.cpp +++ b/uppsrc/CtrlCore/CtrlTimer.cpp @@ -88,12 +88,12 @@ void Ctrl::TimerProc(dword time) while(list->GetNext() != list && ((int)(time - list->GetNext()->time)) > 0) { TimeEvent *e = list->GetNext(); e->Unlink(); - if(e->delay < 0) - sTimeCallback(time - e->delay, e->delay, e->cb, e->id); eventid++; sTimerLock.Leave(); e->cb(); sTimerLock.Enter(); + if(e->delay < 0) + sTimeCallback(time - e->delay, e->delay, e->cb, e->id); delete e; } sTimerLock.Leave();