MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / getLibraryString

Function getLibraryString

launcher/MangoHud.cpp:41–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39namespace MangoHud {
40
41QString getLibraryString()
42{
43 /**
44 * Guess MangoHud install location by searching for vulkan layers in this order:
45 *
46 * $VK_LAYER_PATH
47 * $XDG_DATA_DIRS (/usr/local/share/:/usr/share/)
48 * $XDG_DATA_HOME (~/.local/share)
49 * /etc
50 * $XDG_CONFIG_DIRS (/etc/xdg)
51 * $XDG_CONFIG_HOME (~/.config)
52 *
53 * @returns Absolute path of libMangoHud.so if found and empty QString otherwise.
54 */
55 QStringList vkLayerList;
56 {
57 QString home = QDir::homePath();
58
59 QString vkLayerPath = qEnvironmentVariable("VK_LAYER_PATH");
60 if (!vkLayerPath.isEmpty()) {
61 vkLayerList << vkLayerPath;
62 }
63
64 QStringList xdgDataDirs = qEnvironmentVariable("XDG_DATA_DIRS", "/usr/local/share/:/usr/share/").split(QLatin1String(":"));
65 for (QString dir : xdgDataDirs) {
66 vkLayerList << FS::PathCombine(dir, "vulkan", "implicit_layer.d");
67 }
68
69 QString xdgDataHome = qEnvironmentVariable("XDG_DATA_HOME");
70 if (xdgDataHome.isEmpty()) {
71 xdgDataHome = FS::PathCombine(home, ".local", "share");
72 }
73 vkLayerList << FS::PathCombine(xdgDataHome, "vulkan", "implicit_layer.d");
74
75 vkLayerList << "/etc";
76
77 QStringList xdgConfigDirs = qEnvironmentVariable("XDG_CONFIG_DIRS", "/etc/xdg").split(QLatin1String(":"));
78 for (QString dir : xdgConfigDirs) {
79 vkLayerList << FS::PathCombine(dir, "vulkan", "implicit_layer.d");
80 }
81
82 QString xdgConfigHome = qEnvironmentVariable("XDG_CONFIG_HOME");
83 if (xdgConfigHome.isEmpty()) {
84 xdgConfigHome = FS::PathCombine(home, ".config");
85 }
86 vkLayerList << FS::PathCombine(xdgConfigHome, "vulkan", "implicit_layer.d");
87 }
88
89 for (const QString& vkLayer : vkLayerList) {
90 // prefer to use architecture specific vulkan layers
91 QString currentArch = QSysInfo::currentCpuArchitecture();
92
93 if (currentArch == "arm64") {
94 currentArch = "aarch64";
95 }
96
97 QStringList manifestNames = { QString("MangoHud.%1.json").arg(currentArch), "MangoHud.json" };
98

Callers 2

updateCapabilitiesMethod · 0.85

Calls 7

PathCombineFunction · 0.85
QStringClass · 0.85
requireDocumentFunction · 0.85
requireObjectFunction · 0.85
QFileInfoClass · 0.85
findLibraryFunction · 0.85
isEmptyMethod · 0.45

Tested by

no test coverage detected