From eaa317cc7bef51f3d918c5f86a1cc5d3233119bb Mon Sep 17 00:00:00 2001 From: "michael.lowe%bigfoot.com" Date: Mon, 24 Jan 2000 13:35:21 +0000 Subject: [PATCH] Further optimisation to Windows timers. Some more to come later git-svn-id: svn://10.0.0.236/trunk@58468 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/widget/timer/src/windows/nsTimer.cpp | 21 +++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mozilla/widget/timer/src/windows/nsTimer.cpp b/mozilla/widget/timer/src/windows/nsTimer.cpp index 6328a10f95e..6c34fda0b6e 100644 --- a/mozilla/widget/timer/src/windows/nsTimer.cpp +++ b/mozilla/widget/timer/src/windows/nsTimer.cpp @@ -71,21 +71,24 @@ void CALLBACK FireTimeout(HWND aWindow, nsCOMPtr queue = do_QueryInterface(manager, &rv); if (NS_FAILED(rv)) return; - if (timer->GetPriority() >= NS_PRIORITY_IMMEDIATE) { + MSG wmsg; + if (!::PeekMessage(&wmsg, NULL, 0, 0, PM_NOREMOVE) || + timer->GetPriority() >= NS_PRIORITY_IMMEDIATE) { + // fire timer immediatly timer->Fire(); - + + // while event queue is empty, fire off waiting timers + while (queue->HasReadyTimers(NS_PRIORITY_LOWEST) && + !::PeekMessage(&wmsg, NULL, 0, 0, PM_NOREMOVE)) { + + queue->FireNextReadyTimer(NS_PRIORITY_LOWEST); + } + } else { // defer timer firing queue->AddReadyQueue(timer); } - - // while event queue is empty, fire off waiting timers - MSG wmsg; - while (queue->HasReadyTimers(NS_PRIORITY_LOWEST) && - !::PeekMessage(&wmsg, NULL, 0, 0, PM_NOREMOVE)) { - queue->FireNextReadyTimer(NS_PRIORITY_LOWEST); - } }