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 --- 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();