Module: wine Branch: master Commit: 033cd6013ea9852244b8d58360554c964a7bb540 URL: https://source.winehq.org/git/wine.git/?a=commit;h=033cd6013ea9852244b8d5836...
Author: Rémi Bernon rbernon@codeweavers.com Date: Thu Dec 16 18:20:26 2021 +0100
winepulse.drv: Write data to pulse in pulse_release_render_buffer.
Instead of waiting for the timer loop, which sometimes causes pulse buffer underflows.
This greatly reduces the amount of underflows in Prince of Persia: The Forgotten Sands, as well as in Forza Horizon 4 introduction and menu audio, which are suffering from audio clicks since PE xaudio conversion.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52225 Signed-off-by: Rémi Bernon rbernon@codeweavers.com Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winepulse.drv/pulse.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/dlls/winepulse.drv/pulse.c b/dlls/winepulse.drv/pulse.c index fb8133e9e45..bd886e0d879 100644 --- a/dlls/winepulse.drv/pulse.c +++ b/dlls/winepulse.drv/pulse.c @@ -1675,6 +1675,9 @@ static NTSTATUS pulse_release_render_buffer(void *args) stream->clock_written += written_bytes; stream->locked = 0;
+ /* push as much data as we can to pulseaudio too */ + pulse_write(stream); + TRACE("Released %u, held %lu\n", params->written_frames, stream->held_bytes / pa_frame_size(&stream->ss));
pulse_unlock();