diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qabstracteventdispatcher.h | 9 | ||||
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.cpp | 12 |
2 files changed, 16 insertions, 5 deletions
diff --git a/src/corelib/kernel/qabstracteventdispatcher.h b/src/corelib/kernel/qabstracteventdispatcher.h index 96498d207d..e70530b283 100644 --- a/src/corelib/kernel/qabstracteventdispatcher.h +++ b/src/corelib/kernel/qabstracteventdispatcher.h @@ -53,6 +53,10 @@ QT_BEGIN_NAMESPACE class QAbstractEventDispatcherPrivate; class QSocketNotifier; +#ifdef Q_OS_WIN +class QWinEventNotifier; +#endif + class Q_CORE_EXPORT QAbstractEventDispatcher : public QObject { Q_OBJECT @@ -95,6 +99,11 @@ public: virtual int remainingTime(int timerId) = 0; +#ifdef Q_OS_WIN + virtual bool registerEventNotifier(QWinEventNotifier *notifier) = 0; + virtual void unregisterEventNotifier(QWinEventNotifier *notifier) = 0; +#endif + virtual void wakeUp() = 0; virtual void interrupt() = 0; virtual void flush() = 0; diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index b48bd0c8cc..d81d1ec460 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -134,10 +134,12 @@ QWinEventNotifier::QWinEventNotifier(HANDLE hEvent, QObject *parent) : QObject(*new QWinEventNotifierPrivate(hEvent, false), parent) { Q_D(QWinEventNotifier); - QEventDispatcherWin32 *eventDispatcher = qobject_cast<QEventDispatcherWin32 *>(d->threadData->eventDispatcher); - Q_ASSERT_X(eventDispatcher, "QWinEventNotifier::QWinEventNotifier()", - "Cannot create a win event notifier without a QEventDispatcherWin32"); - eventDispatcher->registerEventNotifier(this); + QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher; + if (!eventDispatcher) { + qWarning("QWinEventNotifier: Can only be used with threads started with QThread"); + } else { + eventDispatcher->registerEventNotifier(this); + } d->enabled = true; } @@ -205,7 +207,7 @@ void QWinEventNotifier::setEnabled(bool enable) return; d->enabled = enable; - QEventDispatcherWin32 *eventDispatcher = qobject_cast<QEventDispatcherWin32 *>(d->threadData->eventDispatcher); + QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher; if (!eventDispatcher) // perhaps application is shutting down return; |