diff options
author | Christian Strømme <christian.stromme@theqtcompany.com> | 2016-02-12 18:26:23 +0100 |
---|---|---|
committer | Christian Stromme <christian.stromme@theqtcompany.com> | 2016-03-22 13:02:00 +0000 |
commit | bf60b1636db7c1c4c0ab9d188783991ecd30b7b1 (patch) | |
tree | 751cd4f61c1a4f8911f69d1471db6632847327b7 /src/plugins/platforms/mirclient | |
parent | c09bc82f0aeaecda1d0f669d7a95f2159476273f (diff) |
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 <paul.tvete@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/mirclient')
-rw-r--r-- | src/plugins/platforms/mirclient/qmirclientintegration.cpp | 15 | ||||
-rw-r--r-- | src/plugins/platforms/mirclient/qmirclientintegration.h | 3 |
2 files changed, 11 insertions, 7 deletions
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<QMirClientScreen*>(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<QMirClientScreen *>(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<QMirClientClipboard> mClipboard; |