From c64b7cd693d10b740706a6424c2caf0d228a4c71 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 26 Aug 2024 09:00:46 +0300 Subject: [PATCH] fix mangohud detection for absolute path Signed-off-by: Trial97 --- launcher/MangoHud.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/launcher/MangoHud.cpp b/launcher/MangoHud.cpp index ba16ddc4ae..29a7c63d94 100644 --- a/launcher/MangoHud.cpp +++ b/launcher/MangoHud.cpp @@ -108,24 +108,31 @@ QString getLibraryString() if (filePath.isEmpty()) { continue; } - - auto conf = Json::requireDocument(filePath, vkLayer); - auto confObject = Json::requireObject(conf, vkLayer); - auto layer = Json::ensureObject(confObject, "layer"); - QString libraryName = Json::ensureString(layer, "library_path"); + try { + auto conf = Json::requireDocument(filePath, vkLayer); + auto confObject = Json::requireObject(conf, vkLayer); + auto layer = Json::ensureObject(confObject, "layer"); + QString libraryName = Json::ensureString(layer, "library_path"); + + if (libraryName.isEmpty()) { + continue; + } + if (QFileInfo(libraryName).isAbsolute()) { + return libraryName; + } #ifdef __GLIBC__ - // Check whether mangohud is usable on a glibc based system - if (!libraryName.isEmpty()) { + // Check whether mangohud is usable on a glibc based system QString libraryPath = findLibrary(libraryName); if (!libraryPath.isEmpty()) { return libraryPath; } - } #else - // Without glibc return recorded shared library as-is. - return libraryName; + // Without glibc return recorded shared library as-is. + return libraryName; #endif + } catch (const Exception& e) { + } } return {};