Maarten Lankhorst : winealsa: Zero buffer, only write data if needed.
Alexandre Julliard
julliard at winehq.org
Tue Apr 26 11:35:46 CDT 2011
Module: wine
Branch: master
Commit: c385a9350597022ad6ebfb75acf39c571140cf8f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c385a9350597022ad6ebfb75acf39c571140cf8f
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Tue Apr 26 13:22:45 2011 +0200
winealsa: Zero buffer, only write data if needed.
---
dlls/winealsa.drv/mmdevdrv.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 37e03a0..056f9f0 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -479,6 +479,10 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient *iface,
hr = E_OUTOFMEMORY;
goto exit;
}
+ if (fmt->wBitsPerSample == 8)
+ memset(This->local_buffer, 128, This->bufsize_frames * fmt->nBlockAlign);
+ else
+ memset(This->local_buffer, 0, This->bufsize_frames * fmt->nBlockAlign);
if((err = snd_pcm_sw_params_get_boundary(sw_params, &boundary)) < 0){
WARN("Unable to get boundary: %d (%s)\n", err, snd_strerror(err));
@@ -1110,7 +1114,7 @@ static void CALLBACK alsa_push_buffer_data(void *user, BOOLEAN timer)
EnterCriticalSection(&This->lock);
- if(This->dataflow == eRender)
+ if(This->dataflow == eRender && This->held_frames)
alsa_write_data(This);
else if(This->dataflow == eCapture)
alsa_read_data(This);
More information about the wine-cvs
mailing list