summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2018-02-14 16:22:25 +0100
committerJohan Helsing <johan.helsing@qt.io>2018-02-26 15:59:45 +0000
commit72999738489b5251d025c954a77c93e8e1fdfd9d (patch)
tree1e17836dea84c49e078aacbc3a363ca305dbe605 /src/plugins/platforms
parent5b69d5f05fdf187ae8a5f08e9a57375cbbd7f142 (diff)
Client: Fail gracefully when wl_display_connect fails
[ChangeLog][QPA plugin] If we're unable to create a connection to the Wayland display, fail gracefully so other platform integrations can be tried instead. This also adds QWaylandIntegration::hasFailed() which can later be extended to report that the platform plugin is unusable for other reasons. I.e. no compatible shell extensions or similar. Task-number: QTBUG-59762 Change-Id: I0f1ae73982e2860814235c1a189741d130e1db3e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/qwayland-brcm-egl/main.cpp9
-rw-r--r--src/plugins/platforms/qwayland-egl/main.cpp9
-rw-r--r--src/plugins/platforms/qwayland-generic/main.cpp9
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/main.cpp9
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-glx/main.cpp9
5 files changed, 40 insertions, 5 deletions
diff --git a/src/plugins/platforms/qwayland-brcm-egl/main.cpp b/src/plugins/platforms/qwayland-brcm-egl/main.cpp
index 2640c8ea0..5fa40b8a7 100644
--- a/src/plugins/platforms/qwayland-brcm-egl/main.cpp
+++ b/src/plugins/platforms/qwayland-brcm-egl/main.cpp
@@ -56,7 +56,14 @@ QPlatformIntegration *QWaylandBrcmEglPlatformIntegrationPlugin::create(const QSt
{
Q_UNUSED(paramList);
Q_UNUSED(system);
- return new QWaylandBrcmEglPlatformIntegration();
+ auto *integration = new QWaylandBrcmEglPlatformIntegration();
+
+ if (integration->hasFailed()) {
+ delete integration;
+ integration = nullptr;
+ }
+
+ return integration;
}
}
diff --git a/src/plugins/platforms/qwayland-egl/main.cpp b/src/plugins/platforms/qwayland-egl/main.cpp
index ebeeff39f..76b82b3b2 100644
--- a/src/plugins/platforms/qwayland-egl/main.cpp
+++ b/src/plugins/platforms/qwayland-egl/main.cpp
@@ -56,7 +56,14 @@ QPlatformIntegration *QWaylandEglPlatformIntegrationPlugin::create(const QString
{
Q_UNUSED(paramList);
Q_UNUSED(system);
- return new QWaylandEglPlatformIntegration();
+ auto *integration = new QWaylandEglPlatformIntegration();
+
+ if (integration->hasFailed()) {
+ delete integration;
+ integration = nullptr;
+ }
+
+ return integration;
}
}
diff --git a/src/plugins/platforms/qwayland-generic/main.cpp b/src/plugins/platforms/qwayland-generic/main.cpp
index 08295c97c..e66a5d45c 100644
--- a/src/plugins/platforms/qwayland-generic/main.cpp
+++ b/src/plugins/platforms/qwayland-generic/main.cpp
@@ -56,7 +56,14 @@ QPlatformIntegration *QWaylandIntegrationPlugin::create(const QString& system, c
{
Q_UNUSED(paramList);
Q_UNUSED(system);
- return new QWaylandIntegration();
+ auto *integration = new QWaylandIntegration();
+
+ if (integration->hasFailed()) {
+ delete integration;
+ integration = nullptr;
+ }
+
+ return integration;
}
}
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/main.cpp b/src/plugins/platforms/qwayland-xcomposite-egl/main.cpp
index 996f60848..d191bba92 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/main.cpp
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/main.cpp
@@ -56,7 +56,14 @@ QPlatformIntegration *QWaylandXCompositeEglPlatformIntegrationPlugin::create(con
{
Q_UNUSED(paramList);
Q_UNUSED(system);
- return new QWaylandXCompositeEglPlatformIntegration();
+ auto *integration = new QWaylandXCompositeEglPlatformIntegration();
+
+ if (integration->hasFailed()) {
+ delete integration;
+ integration = nullptr;
+ }
+
+ return integration;
}
}
diff --git a/src/plugins/platforms/qwayland-xcomposite-glx/main.cpp b/src/plugins/platforms/qwayland-xcomposite-glx/main.cpp
index 9f075ebb7..1dfbc0cf4 100644
--- a/src/plugins/platforms/qwayland-xcomposite-glx/main.cpp
+++ b/src/plugins/platforms/qwayland-xcomposite-glx/main.cpp
@@ -58,7 +58,14 @@ QPlatformIntegration *QWaylandXCompositeGlxPlatformIntegrationPlugin::create(con
{
Q_UNUSED(paramList);
Q_UNUSED(system);
- return new QWaylandXCompositeGlxPlatformIntegration();
+ auto *integration = new QWaylandXCompositeGlxPlatformIntegration();
+
+ if (integration->hasFailed()) {
+ delete integration;
+ integration = nullptr;
+ }
+
+ return integration;
}
}