diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-03-22 16:54:41 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-04-04 22:26:01 +0000 |
commit | 4b4870a12cd920cd45c534deae7ca90716398a19 (patch) | |
tree | 9e81c870fd5c04c41803d666838cecee2f581991 /src | |
parent | ab7d48625aed1c1bb56148f57f958371e810cf4c (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')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 15 |
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; |