QWinEventNotifier::QWinEventNotifier(HANDLE hEvent, QObject *parent) : QObject(*new QWinEventNotifierPrivate(hEvent, false), parent) { Q_D(QWinEventNotifier); 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; }
void QWinEventNotifier::setEnabled(bool enable) { Q_D(QWinEventNotifier); if (d->enabled == enable) // no change return; d->enabled = enable; QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher; if (!eventDispatcher) // perhaps application is shutting down return; if (enable) eventDispatcher->registerEventNotifier(this); else eventDispatcher->unregisterEventNotifier(this); }
void QWinEventNotifier::setEnabled(bool enable) { Q_D(QWinEventNotifier); if (d->enabled == enable) // no change return; d->enabled = enable; QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher.load(); if (!eventDispatcher) // perhaps application is shutting down return; if (Q_UNLIKELY(thread() != QThread::currentThread())) { qWarning("QWinEventNotifier: Event notifiers cannot be enabled or disabled from another thread"); return; } if (enable) eventDispatcher->registerEventNotifier(this); else eventDispatcher->unregisterEventNotifier(this); }