Windows/MinGW: Fix posted events timer not stopping

Specify the type of the enum value SendPostedEventsWindowsTimerId
to be UINT_PTR to work with the g++ interpretation of enumeration
signedness and use the correct type for the returned timer id.

Fixes: QTBUG-78491
Change-Id: I7b3f306d3f60da7a21500ece5243ac90854ccf1a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit d35de9e1b250ce46739dcb6afb9ae8a0247195c7)
This commit is contained in:
Friedemann Kleint 2019-09-19 09:12:39 +02:00
parent e1e4b1b780
commit cb90cdbd65
2 changed files with 7 additions and 3 deletions

View File

@ -83,7 +83,10 @@ enum {
WM_QT_SOCKETNOTIFIER = WM_USER, WM_QT_SOCKETNOTIFIER = WM_USER,
WM_QT_SENDPOSTEDEVENTS = WM_USER + 1, WM_QT_SENDPOSTEDEVENTS = WM_USER + 1,
WM_QT_ACTIVATENOTIFIERS = WM_USER + 2, WM_QT_ACTIVATENOTIFIERS = WM_USER + 2,
SendPostedEventsWindowsTimerId = ~1u };
enum : UINT_PTR {
SendPostedEventsWindowsTimerId = ~UINT_PTR(1)
}; };
class QEventDispatcherWin32Private; class QEventDispatcherWin32Private;
@ -278,7 +281,7 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp)
// no more input or timer events in the message queue, we can allow posted events to be sent normally now // no more input or timer events in the message queue, we can allow posted events to be sent normally now
if (d->sendPostedEventsWindowsTimerId != 0) { if (d->sendPostedEventsWindowsTimerId != 0) {
// stop the timer to send posted events, since we now allow the WM_QT_SENDPOSTEDEVENTS message // stop the timer to send posted events, since we now allow the WM_QT_SENDPOSTEDEVENTS message
KillTimer(d->internalHwnd, d->sendPostedEventsWindowsTimerId); KillTimer(d->internalHwnd, SendPostedEventsWindowsTimerId);
d->sendPostedEventsWindowsTimerId = 0; d->sendPostedEventsWindowsTimerId = 0;
} }
(void) d->wakeUps.fetchAndStoreRelease(0); (void) d->wakeUps.fetchAndStoreRelease(0);

View File

@ -173,7 +173,8 @@ public:
// for controlling when to send posted events // for controlling when to send posted events
QAtomicInt serialNumber; QAtomicInt serialNumber;
int lastSerialNumber, sendPostedEventsWindowsTimerId; int lastSerialNumber;
UINT_PTR sendPostedEventsWindowsTimerId;
QAtomicInt wakeUps; QAtomicInt wakeUps;
// timers // timers