Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v19: include: Add a comment explaining why all kernel callbacks must be in user32.
user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winex11.drv: Pass a struct to x11drv_ime_set_result.
winex11.drv: Pass a struct to x11drv_dnd_post_drop.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
opengl32: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
user32: Add NtUserDispatchCallback kernel callback.
user.exe16: Move kernel callbacks to wow_callbacks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
musl itself expects to be configured to compile with either
-ffloat-store or -fexcess-precision=standard - but when imported
into Wine, those flags aren't used.
This seems to be essential for getting reasonable precision
from some math functions such as exp2() - without the expected
precision truncation, the output value of exp2() can be off by
as much as 0.2% in some cases.
As Wine doesn't build the musl sources with those flags, use
volatile to force storing/reloading floats in order to limit
their intermediate precision, as musl expects. Only do this on
i386 where this is known be required.
This fixes https://bugs.winehq.org/show_bug.cgi?id=56372.
Apparently this issue only appears when compiled with GCC; with
Clang, this already works as expected.
Signed-off-by: Martin Storsjö <martin(a)martin.st>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5276
Some cleanup for expressions, sanitizing the structure a bit especially for abstract operations with multiple args.
I also found out about named bison variables, implicit (as `$token` referring to `token`), or explicit (as `$name` referring to `token[name]`). I think it would make the rules much more readable so I started using them here. My plan is to add them progressively to the rules, unless there's some good reason not to (like idk how portable they are, if that's something we should be worried about).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4201