aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/src/settingsdialogproton.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/src/settingsdialogproton.cpp b/src/src/settingsdialogproton.cpp
index 96906fa..5efc7c6 100644
--- a/src/src/settingsdialogproton.cpp
+++ b/src/src/settingsdialogproton.cpp
@@ -470,8 +470,9 @@ void ProtonSettingsTab::onWinetricks()
// Restore the original host LD_LIBRARY_PATH so that winetricks (and any
// GUI helpers it spawns, e.g. kdialog/zenity) don't pick up Fluorine's
- // bundled Qt libraries, which cause symbol-lookup errors on SteamOS.
- auto restoreOrig = [&](const QString& var, const QString& origVar) {
+ // bundled Qt libraries, which cause symbol-lookup errors.
+ // Uses the same restore-or-strip logic as protonlauncher.cpp.
+ auto restoreOrStrip = [&](const QString& var, const QString& origVar) {
if (env.contains(origVar)) {
const QString orig = env.value(origVar);
if (orig.isEmpty())
@@ -479,11 +480,27 @@ void ProtonSettingsTab::onWinetricks()
else
env.insert(var, orig);
env.remove(origVar);
+ } else {
+ // Fallback: strip Fluorine's bundled library paths by pattern.
+ const QString value = env.value(var);
+ if (value.isEmpty()) return;
+ QStringList kept;
+ for (const QString& p : value.split(':')) {
+ if (p.contains("fluorine") || p.contains(".mount_Fluori")) {
+ continue;
+ }
+ kept.append(p);
+ }
+ if (kept.isEmpty()) {
+ env.remove(var);
+ } else {
+ env.insert(var, kept.join(':'));
+ }
}
};
- restoreOrig("LD_LIBRARY_PATH", "FLUORINE_ORIG_LD_LIBRARY_PATH");
- restoreOrig("LD_PRELOAD", "FLUORINE_ORIG_LD_PRELOAD");
- restoreOrig("QT_PLUGIN_PATH", "FLUORINE_ORIG_QT_PLUGIN_PATH");
+ restoreOrStrip("LD_LIBRARY_PATH", "FLUORINE_ORIG_LD_LIBRARY_PATH");
+ restoreOrStrip("LD_PRELOAD", "FLUORINE_ORIG_LD_PRELOAD");
+ restoreOrStrip("QT_PLUGIN_PATH", "FLUORINE_ORIG_QT_PLUGIN_PATH");
env.remove("QT_QPA_PLATFORM_PLUGIN_PATH");
for (const QString& flag : envFlags) {