From 998e5a0432b10fe88452baebba249efb1471d968 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Wed, 21 Oct 2015 10:01:22 -0500 Subject: [PATCH] xaudio2: Don't render less than a period of audio. Sometimes the ALSA driver will report a very small amount of frames available after a period signal. There is a bug in OpenAL 1.15 which will crash the application if alcRenderSamplesSOFT is called with less than 4 frames. And anyway, we shouldn't incur all of this overhead just to render a couple of frames. So, just skip the rendering step if we have less than a period of space available in the driver. Signed-off-by: Andrew Eikum Signed-off-by: Alexandre Julliard --- dlls/xaudio2_7/xaudio_dll.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c index 76b4c1361cc..a4a9399fe2d 100644 --- a/dlls/xaudio2_7/xaudio_dll.c +++ b/dlls/xaudio2_7/xaudio_dll.c @@ -2723,7 +2723,11 @@ static void do_engine_tick(IXAudio2Impl *This) } nframes = This->period_frames * 3 - pad; - TRACE("going to render %u frames\n", nframes); + + TRACE("frames available: %u\n", nframes); + + if(nframes < This->period_frames) + return; if(!nframes) return;