[PATCH] winealsa: Small mmdevapi fixes
Maarten Lankhorst
m.b.lankhorst at gmail.com
Thu Jun 16 04:48:42 CDT 2011
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);
--
1.7.4.1
More information about the wine-patches
mailing list