diff options
Diffstat (limited to 'src/corelib/kernel/qeventloop.cpp')
-rw-r--r-- | src/corelib/kernel/qeventloop.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp index 8974ff7709..6034698349 100644 --- a/src/corelib/kernel/qeventloop.cpp +++ b/src/corelib/kernel/qeventloop.cpp @@ -101,8 +101,10 @@ QEventLoop::QEventLoop(QObject *parent) Q_D(QEventLoop); if (!QCoreApplication::instance() && QCoreApplicationPrivate::threadRequiresCoreApplication()) { qWarning("QEventLoop: Cannot be used without QApplication"); - } else if (!d->threadData->eventDispatcher.load()) { - QThreadPrivate::createEventDispatcher(d->threadData); + } else if (!d->threadData->hasEventDispatcher()) { + QAbstractEventDispatcher *eventDispatcher = QThreadPrivate::createEventDispatcher(d->threadData); + d->threadData->eventDispatcher.storeRelease(eventDispatcher); + eventDispatcher->startingUp(); } } @@ -129,7 +131,7 @@ QEventLoop::~QEventLoop() bool QEventLoop::processEvents(ProcessEventsFlags flags) { Q_D(QEventLoop); - if (!d->threadData->eventDispatcher.load()) + if (!d->threadData->hasEventDispatcher()) return false; return d->threadData->eventDispatcher.load()->processEvents(flags); } @@ -234,7 +236,7 @@ int QEventLoop::exec(ProcessEventsFlags flags) void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime) { Q_D(QEventLoop); - if (!d->threadData->eventDispatcher.load()) + if (!d->threadData->hasEventDispatcher()) return; QElapsedTimer start; @@ -263,7 +265,7 @@ void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime) void QEventLoop::exit(int returnCode) { Q_D(QEventLoop); - if (!d->threadData->eventDispatcher.load()) + if (!d->threadData->hasEventDispatcher()) return; d->returnCode.store(returnCode); @@ -292,7 +294,7 @@ bool QEventLoop::isRunning() const void QEventLoop::wakeUp() { Q_D(QEventLoop); - if (!d->threadData->eventDispatcher.load()) + if (!d->threadData->hasEventDispatcher()) return; d->threadData->eventDispatcher.load()->wakeUp(); } |