summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qeventdispatcher_winrt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qeventdispatcher_winrt.cpp')
-rw-r--r--src/corelib/kernel/qeventdispatcher_winrt.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_winrt.cpp b/src/corelib/kernel/qeventdispatcher_winrt.cpp
index c8f959a962..aec0981677 100644
--- a/src/corelib/kernel/qeventdispatcher_winrt.cpp
+++ b/src/corelib/kernel/qeventdispatcher_winrt.cpp
@@ -148,12 +148,14 @@ private:
hr = application->get_MainView(&view);
RETURN_VOID_IF_FAILED("Failed to get the main view");
- ComPtr<ICoreWindow> window;
- hr = view->get_CoreWindow(&window);
- RETURN_VOID_IF_FAILED("Failed to get the core window");
+ ComPtr<ICoreApplicationView2> view2;
+ hr = view.As(&view2);
+ RETURN_VOID_IF_FAILED("Failed to cast the main view");
- hr = window->get_Dispatcher(&coreDispatcher);
- RETURN_VOID_IF_FAILED("Failed to get the core dispatcher");
+ hr = view2->get_Dispatcher(&coreDispatcher);
+ if (hr == HRESULT_FROM_WIN32(ERROR_NOT_FOUND)) // expected in thread pool cases
+ return;
+ RETURN_VOID_IF_FAILED("Failed to get core dispatcher");
thread = QThread::currentThread();
}
@@ -186,7 +188,7 @@ bool QEventDispatcherWinRT::processEvents(QEventLoop::ProcessEventsFlags flags)
{
Q_D(QEventDispatcherWinRT);
- if (d->thread != QThread::currentThread())
+ if (d->thread && d->thread != QThread::currentThread())
d->fetchCoreDispatcher();
bool didProcess = false;