summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2010-10-20 10:09:52 (GMT)
committerBradley T. Hughes <bradley.hughes@nokia.com>2010-10-20 11:56:11 (GMT)
commita7d4a808b4ee3e22042bd29e62ced4670c28ea89 (patch)
tree4554505ea12134f37284d1eea6ab579fe7450d4f /src
parent98b931a841f284051a2e22de412701bd2c4f4a76 (diff)
downloadQt-a7d4a808b4ee3e22042bd29e62ced4670c28ea89.zip
Qt-a7d4a808b4ee3e22042bd29e62ced4670c28ea89.tar.gz
Qt-a7d4a808b4ee3e22042bd29e62ced4670c28ea89.tar.bz2
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
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp18
1 files changed, 2 insertions, 16 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 153ccdf..a719e72 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);