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