diff options
author | Liang Qi <liang.qi@qt.io> | 2017-06-28 14:08:52 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-06-28 12:28:39 +0000 |
commit | 80406bd6200e741740e333baa2d2095e03f1327c (patch) | |
tree | 01a318828521408a1802369c8a94d036990bc0ff /src/corelib/kernel/qwineventnotifier.cpp | |
parent | 57a77fe775886b17fc267a4acb490890748d9ee0 (diff) |
Revert "Support more than 62 instances of QWinEventNotifier"
It breaks sth in QLocalSocket which is used in QtRemoteObject.
This reverts commit 5c6210e3452f78cab2f58887e747eb5cb2501f70.
Task-number: QTBUG-61668
Change-Id: Ib11890923773496e5d998b7709ef93b0a839a759
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/corelib/kernel/qwineventnotifier.cpp')
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.cpp | 60 |
1 files changed, 14 insertions, 46 deletions
diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index 6bfa6ca729..0808374a6a 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -37,7 +37,7 @@ ** ****************************************************************************/ -#include "qwineventnotifier_p.h" +#include "qwineventnotifier.h" #ifdef Q_OS_WINRT #include "qeventdispatcher_winrt_p.h" @@ -50,6 +50,19 @@ QT_BEGIN_NAMESPACE +class QWinEventNotifierPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QWinEventNotifier) +public: + QWinEventNotifierPrivate() + : handleToEvent(0), enabled(false) {} + QWinEventNotifierPrivate(HANDLE h, bool e) + : handleToEvent(h), enabled(e) {} + + HANDLE handleToEvent; + bool enabled; +}; + /*! \class QWinEventNotifier \inmodule QtCore @@ -233,49 +246,4 @@ bool QWinEventNotifier::event(QEvent * e) return false; } -#if defined(Q_OS_WINRT) - -bool QWinEventNotifierPrivate::registerWaitObject() -{ - Q_UNIMPLEMENTED(); - return false; -} - -void QWinEventNotifierPrivate::unregisterWaitObject() -{ - Q_UNIMPLEMENTED(); -} - -#else // defined(Q_OS_WINRT) - -static void CALLBACK wfsoCallback(void *context, BOOLEAN /*ignore*/) -{ - QWinEventNotifierPrivate *nd = reinterpret_cast<QWinEventNotifierPrivate *>(context); - QAbstractEventDispatcher *eventDispatcher = nd->threadData->eventDispatcher.load(); - QEventDispatcherWin32Private *edp = QEventDispatcherWin32Private::get( - static_cast<QEventDispatcherWin32 *>(eventDispatcher)); - SetEvent(edp->winEventNotifierActivatedEvent); -} - -bool QWinEventNotifierPrivate::registerWaitObject() -{ - if (RegisterWaitForSingleObject(&waitHandle, handleToEvent, wfsoCallback, this, - INFINITE, WT_EXECUTEONLYONCE) == 0) { - qErrnoWarning("QWinEventNotifier: RegisterWaitForSingleObject failed."); - return false; - } - return true; -} - -void QWinEventNotifierPrivate::unregisterWaitObject() -{ - // Unregister the wait handle and wait for pending callbacks to finish. - if (UnregisterWaitEx(waitHandle, INVALID_HANDLE_VALUE)) - waitHandle = NULL; - else - qErrnoWarning("QWinEventNotifier: UnregisterWaitEx failed."); -} - -#endif // !defined(Q_OS_WINRT) - QT_END_NAMESPACE |