xaudio2: Use assembly wrapper to call OnVoiceProcessingPassStart callback.
During a callback function, some games use the wrong function
signature for an xaudio2 function, which changed between xaudio2
versions. As a result, the EDI and ESI registers are overwritten by
the game. Apparently Windows's implementation happens not to use
these registers in a way that causes the crash.
This patch pushes EDI and ESI onto the stack before calling the
callback, then pops them back after the callback exits.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42520
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=43358Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Showing
Please
register
or
sign in
to comment