summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@theqtcompany.com>2016-02-12 18:26:23 +0100
committerChristian Stromme <christian.stromme@theqtcompany.com>2016-03-22 13:02:00 +0000
commitbf60b1636db7c1c4c0ab9d188783991ecd30b7b1 (patch)
tree751cd4f61c1a4f8911f69d1471db6632847327b7
parentc09bc82f0aeaecda1d0f669d7a95f2159476273f (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>
-rw-r--r--src/plugins/platforms/mirclient/qmirclientintegration.cpp15
-rw-r--r--src/plugins/platforms/mirclient/qmirclientintegration.h3
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;