From b482974de73e163b8221ea4786d586523dc02a44 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Fri, 25 Nov 2005 18:21:42 +0000 Subject: [PATCH] implement addbuffer to waveTheard. it can play wave one time if it is same file in windows svn path=/trunk/; revision=19565 --- reactos/lib/mmdrv/wave.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/reactos/lib/mmdrv/wave.c b/reactos/lib/mmdrv/wave.c index 4c291bf65ce..4dedc7e09a6 100644 --- a/reactos/lib/mmdrv/wave.c +++ b/reactos/lib/mmdrv/wave.c @@ -91,9 +91,31 @@ static DWORD waveThread(LPVOID lpParameter) switch (pClient->AuxFunction) { case WaveThreadAddBuffer: - DPRINT("UNIMPLMENENT WaveThreadAddBuffer "); - break; + LPWAVEHDR *pHdrSearching; + if (pClient->DeviceType == WaveInDevice) + pClient->AuxParam.pHdr->dwBytesRecorded = 0; + + pHdrSearching = &pClient->DeviceQueue; + pClient->AuxParam.pHdr->lpNext = NULL; + + while (*pHdrSearching) + { + pHdrSearching = &(*pHdrSearching)->lpNext; + } + + if (pClient->NextBuffer == NULL) + { + pClient->BufferPosition = 0; + pClient->NextBuffer = pClient->AuxParam.pHdr; + + } + + *pHdrSearching = pClient->AuxParam.pHdr; + + pClient->AuxReturnCode = waveStart(pClient); + break; + case WaveThreadSetState: pClient->AuxReturnCode = waveSetState(pClient, pClient->AuxParam.State); @@ -549,7 +571,7 @@ static MMRESULT OpenWaveDevice(UINT DeviceType, BOOL Result; DWORD BytesReturned; LPWAVEFORMATEX pFormats; - PWAVEALLOC *pUserHandle = &pClient; + PWAVEALLOC *pUserHandle = NULL; HANDLE hDevice; pFormats = (LPWAVEFORMATEX)((LPWAVEOPENDESC)dwParam1)->lpFormat;