summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowscontext.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-02-12 15:45:38 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-13 14:04:46 +0100
commite8ba6922c33c4844487b7eb9c7c2038ae65d4920 (patch)
tree4a97670f14ccdf790b7100423235a22b6edc5821 /src/plugins/platforms/windows/qwindowscontext.cpp
parent03aabe6c6edd68fb429a92e567814b7aac802fc7 (diff)
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 <oliver.wolff@digia.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowscontext.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index b69ec1e30f..08f3ab4dbd 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();
}