From 9d78591d2bc36840b776f2cc5600471f7ea9992b Mon Sep 17 00:00:00 2001 From: tristan-iu Date: Sun, 21 Jun 2026 17:56:42 +0200 Subject: Skip FUSE mount for games that manage their own VFS --- src/src/organizercore.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/src/organizercore.cpp b/src/src/organizercore.cpp index 64772fa..2f62251 100644 --- a/src/src/organizercore.cpp +++ b/src/src/organizercore.cpp @@ -809,7 +809,14 @@ void OrganizerCore::prepareVFS() m_USVFS.setRootBuilderEnabled(vfsRootBuilder, storageDir.toStdString()); } - m_USVFS.updateMapping(fileMapping(m_CurrentProfile->name(), QString())); + // Games that manage their own VFS (e.g. OpenMW via openmw.cfg) opt out of the + // FUSE mount; Fluorine must not overlay Data Files for them. + if (managedGame() == nullptr || managedGame()->usesVFS()) { + m_USVFS.updateMapping(fileMapping(m_CurrentProfile->name(), QString())); + } else { + log::debug("prepareVFS: skipping FUSE mount; managed game manages its own " + "VFS (usesVFS=false)"); + } } void OrganizerCore::unmountVFS() @@ -2687,8 +2694,14 @@ bool OrganizerCore::beforeRun( } try { - m_USVFS.updateMapping(fileMapping(profileName, customOverwrite)); - m_USVFS.updateForcedLibraries(forcedLibraries); + // OpenMW and other self-managed-VFS games skip the FUSE mount (usesVFS()). + if (managedGame() == nullptr || managedGame()->usesVFS()) { + m_USVFS.updateMapping(fileMapping(profileName, customOverwrite)); + m_USVFS.updateForcedLibraries(forcedLibraries); + } else { + log::debug("beforeRun: skipping FUSE mount; managed game manages its own " + "VFS (usesVFS=false)"); + } } catch (const FuseConnectorException& e) { log::error("VFS mount failed: {}", e.what()); return false; -- cgit v1.3.1