From bf60b1636db7c1c4c0ab9d188783991ecd30b7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Fri, 12 Feb 2016 18:26:23 +0100 Subject: Mir: Call QPlatformIntegration::destroyScreen() as recommended. The QPA plugin was deleting the screen object manually, which is not needed or the recommended approach. The screen(s) are already maintained by QGuiApplication and destroying the screen object(s) should be done by calling QPlatformIntegration::destroyScreen(). This change removes the need to keep a reference to the screen(s) in the mir platform integration class, and removes the warning printed on exit. Change-Id: I61f37c25ebabf3e96e4cea458c4af454d025926a Reviewed-by: Paul Olav Tvete --- src/plugins/platforms/mirclient/qmirclientintegration.cpp | 15 ++++++++++----- src/plugins/platforms/mirclient/qmirclientintegration.h | 3 +-- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src/plugins/platforms/mirclient') diff --git a/src/plugins/platforms/mirclient/qmirclientintegration.cpp b/src/plugins/platforms/mirclient/qmirclientintegration.cpp index 592c2d803b..a4f9e46fef 100644 --- a/src/plugins/platforms/mirclient/qmirclientintegration.cpp +++ b/src/plugins/platforms/mirclient/qmirclientintegration.cpp @@ -110,8 +110,7 @@ QMirClientClientIntegration::QMirClientClientIntegration() mNativeInterface->setMirConnection(u_application_instance_get_mir_connection(mInstance)); // Create default screen. - mScreen = new QMirClientScreen(u_application_instance_get_mir_connection(mInstance)); - screenAdded(mScreen); + screenAdded(new QMirClientScreen(u_application_instance_get_mir_connection(mInstance))); // Initialize input. if (qEnvironmentVariableIsEmpty("QTUBUNTU_NO_INPUT")) { @@ -140,7 +139,8 @@ QMirClientClientIntegration::~QMirClientClientIntegration() { delete mInput; delete mInputContext; - delete mScreen; + for (QScreen *screen : QGuiApplication::screens()) + QPlatformIntegration::destroyScreen(screen->handle()); delete mServices; } @@ -185,8 +185,13 @@ QPlatformWindow* QMirClientClientIntegration::createPlatformWindow(QWindow* wind QPlatformWindow* QMirClientClientIntegration::createPlatformWindow(QWindow* window) { - return new QMirClientWindow(window, mClipboard, static_cast(mScreen), - mInput, u_application_instance_get_mir_connection(mInstance)); + return new QMirClientWindow(window, mClipboard, screen(), + mInput, u_application_instance_get_mir_connection(mInstance)); +} + +QMirClientScreen *QMirClientClientIntegration::screen() const +{ + return static_cast(QGuiApplication::primaryScreen()->handle()); } bool QMirClientClientIntegration::hasCapability(QPlatformIntegration::Capability cap) const diff --git a/src/plugins/platforms/mirclient/qmirclientintegration.h b/src/plugins/platforms/mirclient/qmirclientintegration.h index e41cbe2cee..443f61f363 100644 --- a/src/plugins/platforms/mirclient/qmirclientintegration.h +++ b/src/plugins/platforms/mirclient/qmirclientintegration.h @@ -74,7 +74,7 @@ public: QPlatformOpenGLContext* createPlatformOpenGLContext(QOpenGLContext* context); QPlatformWindow* createPlatformWindow(QWindow* window); - QMirClientScreen* screen() const { return mScreen; } + QMirClientScreen* screen() const; private: void setupOptions(); @@ -85,7 +85,6 @@ private: QMirClientPlatformServices* mServices; - QMirClientScreen* mScreen; QMirClientInput* mInput; QPlatformInputContext* mInputContext; QSharedPointer mClipboard; -- cgit v1.2.3