implement addbuffer to waveTheard. it can play wave one time if it is
same file in windows
Modified: trunk/reactos/lib/mmdrv/wave.c
_____
Modified: trunk/reactos/lib/mmdrv/wave.c
--- trunk/reactos/lib/mmdrv/wave.c 2005-11-25 18:05:42 UTC (rev
19564)
+++ trunk/reactos/lib/mmdrv/wave.c 2005-11-25 18:21:42 UTC (rev
19565)
@@ -91,9 +91,31 @@
switch (pClient->AuxFunction)
{
case WaveThreadAddBuffer:
- DPRINT("UNIMPLMENENT WaveThreadAddBuffer ");
+ 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 @@
BOOL Result;
DWORD BytesReturned;
LPWAVEFORMATEX pFormats;
- PWAVEALLOC *pUserHandle = &pClient;
+ PWAVEALLOC *pUserHandle = NULL;
HANDLE hDevice;
pFormats = (LPWAVEFORMATEX)((LPWAVEOPENDESC)dwParam1)->lpFormat;