From a7d4a808b4ee3e22042bd29e62ced4670c28ea89 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Wed, 20 Oct 2010 12:09:52 +0200 Subject: Don't allow posted events to starve native messages. This reverts commit 9215506e6a057d8aef7415c2921214e1ba1c760d, which caused the above behavior. The intention of this commit was to prevent native messages from starving posted events, but as shown by the example, it is possible for posted events to then starve native messages (which results in very bad behavior on Windows if the user is moving or resizing a window). Unfortunately, my attempts to construct an autotest for this have failed, as I've not found a way to generate the right kinds of native messages from code. Task-number: QTBUG-14021 Reviewed-by: prasanth --- src/corelib/kernel/qeventdispatcher_win.cpp | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) (limited to 'src/corelib/kernel/qeventdispatcher_win.cpp') diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index 153ccdf7b2..a719e727bd 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -354,9 +354,6 @@ public: // for controlling when to send posted events QAtomicInt serialNumber; int lastSerialNumber; -#ifndef Q_OS_WINCE - int lastMessageTime; -#endif QAtomicInt wakeUps; // timers @@ -381,11 +378,7 @@ public: QEventDispatcherWin32Private::QEventDispatcherWin32Private() : threadId(GetCurrentThreadId()), interrupt(false), internalHwnd(0), getMessageHook(0), - serialNumber(0), lastSerialNumber(0), -#ifndef Q_OS_WINCE - lastMessageTime(0), -#endif - wakeUps(0) + serialNumber(0), lastSerialNumber(0), wakeUps(0) { resolveTimerAPI(); } @@ -500,9 +493,6 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA int localSerialNumber = d->serialNumber; if (localSerialNumber != d->lastSerialNumber) { d->lastSerialNumber = localSerialNumber; -#ifndef Q_OS_WINCE - d->lastMessageTime = GetMessageTime(); -#endif QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); } return 0; @@ -521,11 +511,7 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp) int localSerialNumber = d->serialNumber; MSG unused; if ((HIWORD(GetQueueStatus(QS_INPUT | QS_RAWINPUT)) == 0 - && PeekMessage(&unused, 0, WM_TIMER, WM_TIMER, PM_NOREMOVE) == 0) -#ifndef Q_OS_WINCE - || GetMessageTime() - d->lastMessageTime >= 10 -#endif - ) { + && PeekMessage(&unused, 0, WM_TIMER, WM_TIMER, PM_NOREMOVE) == 0)) { // no more input or timer events in the message queue or more than 10ms has elapsed since // we send posted events, we can allow posted events to be sent now (void) d->wakeUps.fetchAndStoreRelease(0); -- cgit v1.2.3