Andrew Nguyen : winmm: Make the return behavior of waveOutPrepareHeader consistent for 16-bit and 32-bit .
Alexandre Julliard
julliard at winehq.org
Mon Jan 26 10:14:05 CST 2009
Module: wine
Branch: master
Commit: cb6ddfc75bf3d295e657699d9e85146b8cf1237e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cb6ddfc75bf3d295e657699d9e85146b8cf1237e
Author: Andrew Nguyen <arethusa26 at gmail.com>
Date: Sun Jan 25 02:56:48 2009 -0600
winmm: Make the return behavior of waveOutPrepareHeader consistent for 16-bit and 32-bit.
---
dlls/winmm/mmsystem.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c
index f3046b6..69f14fc 100644
--- a/dlls/winmm/mmsystem.c
+++ b/dlls/winmm/mmsystem.c
@@ -1279,15 +1279,26 @@ UINT16 WINAPI waveOutPrepareHeader16(HWAVEOUT16 hWaveOut, /* [in] */
{
LPWINE_MLD wmld;
LPWAVEHDR lpWaveOutHdr = MapSL(lpsegWaveOutHdr);
+ UINT16 result;
TRACE("(%04X, %08x, %u);\n", hWaveOut, lpsegWaveOutHdr, uSize);
if (lpWaveOutHdr == NULL) return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get(HWAVEOUT_32(hWaveOut), MMDRV_WAVEOUT, FALSE)) == NULL)
- return MMSYSERR_INVALHANDLE;
+ return MMSYSERR_INVALHANDLE;
+
+ if ((result = MMDRV_Message(wmld, WODM_PREPARE, lpsegWaveOutHdr,
+ uSize, FALSE)) != MMSYSERR_NOTSUPPORTED)
+ return result;
- return MMDRV_Message(wmld, WODM_PREPARE, lpsegWaveOutHdr, uSize, FALSE);
+ if (lpWaveOutHdr->dwFlags & WHDR_INQUEUE)
+ return WAVERR_STILLPLAYING;
+
+ lpWaveOutHdr->dwFlags |= WHDR_PREPARED;
+ lpWaveOutHdr->dwFlags &= ~WHDR_DONE;
+
+ return MMSYSERR_NOERROR;
}
/**************************************************************************
More information about the wine-cvs
mailing list