Andrew Nguyen : winmm: Make the return behavior of waveOutPrepareHeader consistent for 16-bit and 32-bit .
Module: wine Branch: master Commit: cb6ddfc75bf3d295e657699d9e85146b8cf1237e URL: http://source.winehq.org/git/wine.git/?a=commit;h=cb6ddfc75bf3d295e657699d9e... Author: Andrew Nguyen <arethusa26(a)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; } /**************************************************************************
participants (1)
-
Alexandre Julliard