From e8ba6922c33c4844487b7eb9c7c2038ae65d4920 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 12 Feb 2014 15:45:38 +0100 Subject: [PATCH] Windows: Destroy tablet support before unregistering window classes. Silences warnings in tests that instantiate QGuiApplication multiple times. QSYSTEM: tst_QGuiApplication::removePostedEvents() QApplication::regClass: Registering window class 'TabletDummyWindow' failed. (Class already exists.) QSYSTEM: tst_QGuiApplication::removePostedEvents() UnregisterClass failed for 'TabletDummyWindow' (Class still has open windows.) Change-Id: I6af2d38a2debd35f4dc0d48c09244dff022bd6b8 Reviewed-by: Oliver Wolff --- src/plugins/platforms/windows/qwindowscontext.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index b69ec1e30fd..08f3ab4dbd3 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -330,6 +330,9 @@ QWindowsContext::QWindowsContext() : QWindowsContext::~QWindowsContext() { +#if !defined(QT_NO_TABLETEVENT) && !defined(Q_OS_WINCE) + d->m_tabletSupport.reset(); // Destroy internal window before unregistering classes. +#endif unregisterWindowClasses(); if (d->m_oleInitializeResult == S_OK || d->m_oleInitializeResult == S_FALSE) OleUninitialize(); @@ -517,8 +520,10 @@ void QWindowsContext::unregisterWindowClasses() { const HINSTANCE appInstance = (HINSTANCE)GetModuleHandle(0); - foreach (const QString &name, d->m_registeredWindowClassNames) - UnregisterClass((wchar_t*)name.utf16(), appInstance); + foreach (const QString &name, d->m_registeredWindowClassNames) { + if (!UnregisterClass((wchar_t*)name.utf16(), appInstance) && QWindowsContext::verbose) + qErrnoWarning("UnregisterClass failed for '%s'", qPrintable(name)); + } d->m_registeredWindowClassNames.clear(); }