diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-20 15:40:45 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-20 15:40:45 -0500 |
| commit | 6b9f0876cfbf6f8c723c86ec941ee70933aa883f (patch) | |
| tree | de8c9b3121ddcf505ba282f760e78bac2967cbf3 /libs/plugin_python/tests/runner/test_diagnose.cpp | |
| parent | 915298db2a22213441c5da909786ccc0db64bbaa (diff) | |
Bind-mount profile saves, fix multi-download delete
Replace the per-launch __MO_Saves symlink with a kernel bind mount
inside an unprivileged user+mount namespace. Writes from the game
land directly in the profile's saves dir via the mount, which Wine
can't replace with a real directory the way it could with a symlink.
The namespace (and therefore the bind) tears down automatically when
the game process tree exits, so afterRun no longer needs to sync
saves or undeploy anything. Fall back to the symlink path on
kernels where unprivileged_userns_clone is disabled (Debian buster,
linux-hardened); detection is via /proc/sys/kernel/unprivileged_userns_clone.
DownloadListView::issueDeleteSelected captured indices up-front and
looped emit removeDownload(row). DownloadManager::removeDownload
calls refreshList() at the end, which clears finished entries from
m_ActiveDownloads and rebuilds from disk enumeration — stale indices
after the first delete pointed at the wrong file or triggered the
invalid-index error. Capture filenames instead and re-resolve the
current row each iteration.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'libs/plugin_python/tests/runner/test_diagnose.cpp')
0 files changed, 0 insertions, 0 deletions
