diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-06-12 14:37:39 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-06-26 05:05:38 +0000 |
commit | 5c6210e3452f78cab2f58887e747eb5cb2501f70 (patch) | |
tree | bc310dfa08032700155682f7b920c89ea6bd8a1d /src/corelib/kernel/qeventdispatcher_win_p.h | |
parent | 58d3a3eda271ad696d5df6f16b09bad97f9b54a1 (diff) |
Support more than 62 instances of QWinEventNotifier
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.
[ChangeLog][QtCore][QWinEventNotifier] QWinEventNotifier is not
restricted to 62 instances anymore.
Task-number: QTBUG-8819
Change-Id: I2c749951453a4b699cc50dada0d6017440b67a4a
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); |