*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
This commit is contained in:
cxl 2011-03-19 18:12:33 +00:00
parent 60913c260d
commit 820deb4334

View file

@ -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();