Hello,
On my system I have WINEESYNC=1 and WINEFSYNC=1 set as environment variables, for use with non-Steam Wine instances.
While trying to disable Esync/Fsync for a specific game on Steam (Supreme Commander), I found that setting PROTON_NO_ESYNC=1 and PROTON_NO_FSYNC=1 didn't have the desired effect and that Fsync kept firing up and preventing me from successfully running the game.
In the the end I realized that what prevented the Proton variables from working properly was the previously mentioned WINEESYNC and WINEFSYNC variables, and that disabling those made the problem go away.
So, instead of Proton isolating itself from the rest of the system and obeying only its own set of environment variables, ignoring everything else, on the contrary it seems that system-wide Wine variables are allowed to intrude and override the Proton environment. Is this expected behavior? Shouldn't PROTON_NO_ESYNC=1 and PROTON_NO_FSYNC=1 also respectively imply WINEESYNC=0 and WINEFSYNC=0 as far as Proton is concerned?
Yes, you're right. We're assuming the variables are unset, and just setting them if needed. We don't unset them if they are not needed. I'll fix that for an upcoming version.
Proton 5.0-7 included a fix for this. Can you give it a try and see if it is working as you expect now?
Great, I can confirm that now it's working as it should: setting PROTON_NO_ESYNC/FSYNC completely disables Esync/Fsync, even if I try to force their use by also specifying WINEESYNC/FSYNC=1 in the game's launch options.
Thanks for the very quick fix!
PS - Can I assume that this is a generic fix that should work for more or less every possible scenario of a Wine vs Proton environment variable, or is it a case by case solution? I don't have a specific variable in mind, but it would be something to keep an eye for in the future.
Thanks for retesting @Nocifer, 1a0cf7f7e2139d1e298b43bc59681ff979e73ade only added code to handle this specific situation.
Closing as fixed.
Most helpful comment
Yes, you're right. We're assuming the variables are unset, and just setting them if needed. We don't unset them if they are not needed. I'll fix that for an upcoming version.