From f6ee80912f99f2605f344face5523134786a67ec Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 4 Aug 2014 12:24:01 +0200 Subject: [PATCH] Windows: Ensure DPI awareness is set only once. Fix warning: QWARN : tst_QGuiApplication::execAfterExit() SetProcessDpiAwareness failed: "COM error 0xffffffff80070005 (Unknown error 0x0ffffffff80070005)" occurring when instantiating QGuiApplication repeatedly in tests. Task-number: QTBUG-38993 Change-Id: Id6c8e915b25011bb60c2f8b1d0e4a794cd345647 Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowsintegration.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 529dd75ed5a..7c50ac69c23 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -217,6 +217,7 @@ QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(const QStringList ¶mL : m_options(0) , m_fontDatabase(0) { + static bool dpiAwarenessSet = false; int tabletAbsoluteRange = -1; // Default to per-monitor awareness to avoid being scaled when monitors with different DPI // are connected to Windows 8.1 @@ -224,7 +225,10 @@ QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(const QStringList ¶mL m_options = parseOptions(paramList, &tabletAbsoluteRange, &dpiAwareness); if (tabletAbsoluteRange >= 0) m_context.setTabletAbsoluteRange(tabletAbsoluteRange); - m_context.setProcessDpiAwareness(dpiAwareness); + if (!dpiAwarenessSet) { // Set only once in case of repeated instantiations of QGuiApplication. + m_context.setProcessDpiAwareness(dpiAwareness); + dpiAwarenessSet = true; + } } QWindowsIntegrationPrivate::~QWindowsIntegrationPrivate()