From 5275a91907b413d5aa835693666deb52cc6e7ac3 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 19 Dec 2024 15:07:13 +0100 Subject: [PATCH 1/2] Detect if it is running in a Vmware or being access via RDP to disable graphic acceleration. There has been reports of the client crashing in a VMware or being accessed via RDP starting with 3.15.0 due to the client's use of graphic acceleration. Signed-off-by: Camila Ayres --- src/gui/application.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 080ad34e63..2ac79a20ea 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -232,6 +232,24 @@ Application::Application(int &argc, char **argv) // Ensure OpenSSL config file is only loaded from app directory QString opensslConf = QCoreApplication::applicationDirPath() + QStringLiteral("/openssl.cnf"); qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit()); + + const auto shouldDisableGraphicsAcceleration = [&]() { + const auto systemEnvironment = QProcessEnvironment::systemEnvironment(); + if (systemEnvironment.contains(QStringLiteral("VMWARE"))) { + return true; + } + + if (systemEnvironment.contains("SESSIONNAME") && systemEnvironment.value("SESSIONNAME").startsWith("RDP-")) { + return true; + } + + return false; + }; + + if (shouldDisableGraphicsAcceleration()) { + QProcessEnvironment::systemEnvironment().insert(QStringLiteral("SVGA_ALLOW_LLVMPIPE"), 0); + qCInfo(lcApplication) << "Disabling graphics acceleration, application might be running in a virtual or in a remote desktop."; + } #endif // TODO: Can't set this without breaking current config paths From 4544c2f06b82d4421ca0dac26c8459b3c79ec133 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 12 Feb 2025 09:53:07 +0100 Subject: [PATCH 2/2] use qputenv to modify the running process environment Signed-off-by: Matthieu Gallien --- src/gui/application.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 2ac79a20ea..6c00e6b6d7 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -234,12 +234,11 @@ Application::Application(int &argc, char **argv) qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit()); const auto shouldDisableGraphicsAcceleration = [&]() { - const auto systemEnvironment = QProcessEnvironment::systemEnvironment(); - if (systemEnvironment.contains(QStringLiteral("VMWARE"))) { + if (qEnvironmentVariableIsSet("VMWARE")) { return true; } - if (systemEnvironment.contains("SESSIONNAME") && systemEnvironment.value("SESSIONNAME").startsWith("RDP-")) { + if (qEnvironmentVariableIsSet("SESSIONNAME") && qEnvironmentVariable("SESSIONNAME").startsWith("RDP-")) { return true; } @@ -247,7 +246,7 @@ Application::Application(int &argc, char **argv) }; if (shouldDisableGraphicsAcceleration()) { - QProcessEnvironment::systemEnvironment().insert(QStringLiteral("SVGA_ALLOW_LLVMPIPE"), 0); + qputenv("SVGA_ALLOW_LLVMPIPE", 0); qCInfo(lcApplication) << "Disabling graphics acceleration, application might be running in a virtual or in a remote desktop."; } #endif