Module: wine Branch: master Commit: cb6ddfc75bf3d295e657699d9e85146b8cf1237e URL: http://source.winehq.org/git/wine.git/?a=commit;h=cb6ddfc75bf3d295e657699d9e...
Author: Andrew Nguyen arethusa26@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; }
/**************************************************************************