diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-07-27 14:06:30 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-07-30 19:11:49 +0000 |
commit | 85403d0af06a0728c9c6f1bd7a6f224949cd894e (patch) | |
tree | 2a769aedc41e65b51723f0d430e93a9a35c5d59e /src/corelib/kernel/qeventdispatcher_win_p.h | |
parent | 7b2debda2b7ea94b9ca272180d7cba68a18ca0c1 (diff) |
Support more than 62 instances of QWinEventNotifier, take 2
QWinEventNotifiers were limited to 62 instances, because of
WaitForMultipleObject's limitation to MAXIMUM_WAIT_OBJECTS - 1 handles.
Use the RegisterWaitForSingleObject API which does not have this
restriction and executes waits in threads managed by the system. A
central manual reset event per event dispatcher is signaled in the
RegisterWaitForSingleObject callback and waited for in the event loop.
Task-number: QTBUG-8819
Change-Id: I3061811c18e669becf9de603bbdd7ba96e4d2fcd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/corelib/kernel/qeventdispatcher_win_p.h')
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_win_p.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_win_p.h b/src/corelib/kernel/qeventdispatcher_win_p.h index f6d1bffdf5..683c7f8f36 100644 --- a/src/corelib/kernel/qeventdispatcher_win_p.h +++ b/src/corelib/kernel/qeventdispatcher_win_p.h @@ -161,6 +161,7 @@ class Q_CORE_EXPORT QEventDispatcherWin32Private : public QAbstractEventDispatch public: QEventDispatcherWin32Private(); ~QEventDispatcherWin32Private(); + static QEventDispatcherWin32Private *get(QEventDispatcherWin32 *q) { return q->d_func(); } DWORD threadId; @@ -192,6 +193,7 @@ public: void postActivateSocketNotifiers(); void doWsaAsyncSelect(int socket, long event); + HANDLE winEventNotifierActivatedEvent; QList<QWinEventNotifier *> winEventNotifierList; void activateEventNotifier(QWinEventNotifier * wen); |