[PATCH 2/4] dsound: Adjust for partial block before prepare-header and add-buffer steps.
Ken Thomases
ken at codeweavers.com
Tue Mar 11 00:59:07 CDT 2008
Otherwise, the wave-in driver(s) may copy incorrect data to internal structures.
---
dlls/dsound/capture.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c
index 0c74ef9..05ab805 100644
--- a/dlls/dsound/capture.c
+++ b/dlls/dsound/capture.c
@@ -1146,7 +1146,10 @@ IDirectSoundCaptureBufferImpl_Start(
for (c = 0; c < device->nrofpwaves; ++c) {
device->pwave[c].lpData = (char *)device->buffer + c * blocksize;
- device->pwave[c].dwBufferLength = blocksize;
+ if (c + 1 == device->nrofpwaves)
+ device->pwave[c].dwBufferLength = device->buflen - c *
blocksize;
+ else
+ device->pwave[c].dwBufferLength = blocksize;
device->pwave[c].dwBytesRecorded = 0;
device->pwave[c].dwUser = (DWORD)device;
device->pwave[c].dwFlags = 0;
@@ -1167,8 +1170,6 @@ IDirectSoundCaptureBufferImpl_Start(
break;
}
}
- if (device->buflen % blocksize)
- device->pwave[device->nrofpwaves - 1].dwBufferLength =
device->buflen % blocksize;
FillMemory(device->buffer, device->buflen,
(device->pwfx->wBitsPerSample == 8) ? 128 : 0);
}
--
1.5.3.6
More information about the wine-patches
mailing list