mshtml: Limit number of tasks processed in process_timer.
This commit is contained in:
parent
58dc0346d6
commit
a6fbf560e9
|
@ -255,17 +255,29 @@ static LRESULT process_timer(void)
|
||||||
thread_data_t *thread_data;
|
thread_data_t *thread_data;
|
||||||
IDispatch *disp;
|
IDispatch *disp;
|
||||||
DWORD tc;
|
DWORD tc;
|
||||||
task_timer_t *timer;
|
task_timer_t *timer=NULL, *last_timer;
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
|
|
||||||
thread_data = get_thread_data(FALSE);
|
thread_data = get_thread_data(FALSE);
|
||||||
assert(thread_data != NULL);
|
assert(thread_data != NULL);
|
||||||
|
|
||||||
while(!list_empty(&thread_data->timer_list)) {
|
if(list_empty(&thread_data->timer_list)) {
|
||||||
|
KillTimer(thread_data->thread_hwnd, TIMER_ID);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
last_timer = LIST_ENTRY(list_tail(&thread_data->timer_list), task_timer_t, entry);
|
||||||
|
do {
|
||||||
|
tc = GetTickCount();
|
||||||
|
if(timer == last_timer) {
|
||||||
|
timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
|
||||||
|
SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time>tc ? timer->time-tc : 0, NULL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
|
timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
|
||||||
|
|
||||||
tc = GetTickCount();
|
|
||||||
if(timer->time > tc) {
|
if(timer->time > tc) {
|
||||||
SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time-tc, NULL);
|
SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time-tc, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -284,7 +296,7 @@ static LRESULT process_timer(void)
|
||||||
call_timer_disp(disp);
|
call_timer_disp(disp);
|
||||||
|
|
||||||
IDispatch_Release(disp);
|
IDispatch_Release(disp);
|
||||||
}
|
}while(!list_empty(&thread_data->timer_list));
|
||||||
|
|
||||||
KillTimer(thread_data->thread_hwnd, TIMER_ID);
|
KillTimer(thread_data->thread_hwnd, TIMER_ID);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue