aboutsummaryrefslogtreecommitdiff
path: root/libs/plugin_python/src/mobase/pybind11_all.h
diff options
context:
space:
mode:
authorSulfurNitride <lukew19@proton.me>2026-06-24 14:45:04 -0500
committerSulfurNitride <lukew19@proton.me>2026-06-24 14:45:04 -0500
commit0e993b45d3c4db36bf01ec0e56e11fd836cc59a2 (patch)
tree0882e6f3bada56a32d7e36a16ed180c0b3093dc8 /libs/plugin_python/src/mobase/pybind11_all.h
parent59f3ba27e5d180c8e1861b41a1db3f58663bdd0f (diff)
Fix shader cache write failures and INI key clobber
Shader cache (mo2_lookup): Starfield skips mkdir("ShaderCache/Lighting/") and goes straight to CreateFile("ShaderCache/Lighting/X.pso"). USVFS handles this by intercepting at Win32 level and auto-creating parent dirs in overwrite. FUSE operates below the kernel path-resolver, so if a parent component is missing the kernel returns ENOENT before mo2_create is ever called. Fix: in mo2_lookup, when a name has no '.' (directory-like) and is not found in the VFS, auto-create it in staging and return a positive inode so the kernel can continue resolving the path. createDirectory uses create_directories internally, so staging parent dirs are also created when the parent came from overwrite rather than this session. INI key clobber (mo2_open / mo2_write): keep_cache=1 with AUTO_INVAL_DATA disabled let the kernel serve stale pre-COW page cache on re-reads. Wine's WritePrivateProfileString does open→read→close→open(O_TRUNC)→write per key; after the first write triggered COW, subsequent reads got old cached content, so each new key was written on top of the original file — only the last key survived. Fix: call fuse_lowlevel_notify_inval_inode at all four COW and O_TRUNC paths to flush stale kernel pages precisely at the moment the backing path changes, without the blanket performance cost of keep_cache=0. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'libs/plugin_python/src/mobase/pybind11_all.h')
0 files changed, 0 insertions, 0 deletions