summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-03-22 16:54:41 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-04-04 22:26:01 +0000
commit4b4870a12cd920cd45c534deae7ca90716398a19 (patch)
tree9e81c870fd5c04c41803d666838cecee2f581991 /src/gui
parentab7d48625aed1c1bb56148f57f958371e810cf4c (diff)
Parse XDG_SESSION_TYPE and use that to determine default platform
Makes Qt application try to launch using wayland in a wayland session, even if it was a default desktop build. Change-Id: Ib7d4a79fbe777527d1862bd775627afae10b1e9e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qguiapplication.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 836bbeccee..caa8aaca4b 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1291,6 +1291,21 @@ void QGuiApplicationPrivate::createPlatformIntegration()
#ifdef QT_QPA_DEFAULT_PLATFORM_NAME
platformName = QT_QPA_DEFAULT_PLATFORM_NAME;
#endif
+#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
+ QByteArray sessionType = qgetenv("XDG_SESSION_TYPE");
+ if (!sessionType.isEmpty()) {
+ if (sessionType == QByteArrayLiteral("x11") && !platformName.contains(QByteArrayLiteral("xcb")))
+ platformName = QByteArrayLiteral("xcb");
+ else if (sessionType == QByteArrayLiteral("wayland") && !platformName.contains(QByteArrayLiteral("wayland")))
+ platformName = QByteArrayLiteral("wayland");
+ }
+#ifdef QT_QPA_DEFAULT_PLATFORM_NAME
+ // Add it as fallback in case XDG_SESSION_TYPE is something wrong
+ if (!platformName.contains(QT_QPA_DEFAULT_PLATFORM_NAME))
+ platformName += QByteArrayLiteral(";" QT_QPA_DEFAULT_PLATFORM_NAME);
+#endif
+#endif
+
QByteArray platformNameEnv = qgetenv("QT_QPA_PLATFORM");
if (!platformNameEnv.isEmpty()) {
platformName = platformNameEnv;