summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qthread_win.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/thread/qthread_win.cpp')
-rw-r--r--src/corelib/thread/qthread_win.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index 136733444c..4459ae87af 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -331,15 +331,14 @@ void qt_set_thread_name(HANDLE threadId, LPCSTR threadName)
#endif // QT_NO_THREAD
-void QThreadPrivate::createEventDispatcher(QThreadData *data)
+QAbstractEventDispatcher *QThreadPrivate::createEventDispatcher(QThreadData *data)
{
+ Q_UNUSED(data);
#ifndef Q_OS_WINRT
- QEventDispatcherWin32 *theEventDispatcher = new QEventDispatcherWin32;
+ return new QEventDispatcherWin32;
#else
- QEventDispatcherWinRT *theEventDispatcher = new QEventDispatcherWinRT;
+ return new QEventDispatcherWinRT;
#endif
- data->eventDispatcher.storeRelease(theEventDispatcher);
- theEventDispatcher->startingUp();
}
#ifndef QT_NO_THREAD
@@ -360,10 +359,13 @@ unsigned int __stdcall QT_ENSURE_STACK_ALIGNED_FOR_SSE QThreadPrivate::start(voi
data->quitNow = thr->d_func()->exited;
}
- if (data->hasEventDispatcher()) // custom event dispatcher set?
- data->eventDispatcher.load()->startingUp();
- else
- createEventDispatcher(data);
+ QAbstractEventDispatcher *eventDispatcher = data->eventDispatcher.load();
+ if (!eventDispatcher) {
+ eventDispatcher = createEventDispatcher(data);
+ data->eventDispatcher.storeRelease(eventDispatcher);
+ }
+
+ eventDispatcher->startingUp();
#if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINRT)
// sets the name of the current thread.