Maarten Lankhorst : quartz: Silence the directsound buffer on starting.
julliard at winehq.org
Sat Mar 15 05:53:50 CDT 2008
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Fri Mar 14 11:47:42 2008 -0700
quartz: Silence the directsound buffer on starting.
If the buffer is created and stopped, the contents of the buffer are
indeterminate, by zeroing it you won't get leftovers from last play.
dlls/quartz/dsoundrender.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
index af9fb37..6c5d3f1 100644
@@ -498,6 +498,15 @@ static HRESULT WINAPI DSoundRender_Run(IBaseFilter * iface, REFERENCE_TIME tStar
/* It's okay if there's no buffer yet. It'll start when it's created */
+ if (This->state == State_Stopped)
+ char *buf1;
+ DWORD size1;
+ IDirectSoundBuffer_Lock(This->dsbuffer, 0, 0, (void**)&buf1, &size1, NULL, NULL, DSBLOCK_ENTIREBUFFER);
+ memset(buf1, 0, size1);
+ IDirectSoundBuffer_Unlock(This->dsbuffer, buf1, size1, NULL, 0);
hr = IDirectSoundBuffer_Play(This->dsbuffer, 0, 0, DSBPLAY_LOOPING);
ERR("Can't start playing! (%x)\n", hr);
More information about the wine-cvs