Module: wine Branch: master Commit: 4cfa5b875ce4d6844a1a6417b8d0dcf0914cb42a URL: http://source.winehq.org/git/wine.git/?a=commit;h=4cfa5b875ce4d6844a1a6417b8...
Author: Ken Thomases ken@codeweavers.com Date: Thu Feb 5 15:49:04 2009 -0600
winecoreaudio.drv: Add support for waveOutBreakLoop/WODM_BREAKLOOP.
---
dlls/winecoreaudio.drv/audio.c | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/dlls/winecoreaudio.drv/audio.c b/dlls/winecoreaudio.drv/audio.c index 1d5df02..43f2451 100644 --- a/dlls/winecoreaudio.drv/audio.c +++ b/dlls/winecoreaudio.drv/audio.c @@ -1329,6 +1329,36 @@ static DWORD wodReset(WORD wDevID) }
/************************************************************************** +* wodBreakLoop [internal] +*/ +static DWORD wodBreakLoop(WORD wDevID) +{ + WINE_WAVEOUT* wwo; + + TRACE("(%u);\n", wDevID); + + if (wDevID >= MAX_WAVEOUTDRV) + { + WARN("bad device ID !\n"); + return MMSYSERR_BADDEVICEID; + } + + wwo = &WOutDev[wDevID]; + + OSSpinLockLock(&wwo->lock); + + if (wwo->lpLoopPtr != NULL) + { + /* ensure exit at end of current loop */ + wwo->dwLoops = 1; + } + + OSSpinLockUnlock(&wwo->lock); + + return MMSYSERR_NOERROR; +} + +/************************************************************************** * wodGetPosition [internal] */ static DWORD wodGetPosition(WORD wDevID, LPMMTIME lpTime, DWORD uSize) @@ -1488,7 +1518,7 @@ DWORD WINAPI CoreAudio_wodMessage(UINT wDevID, UINT wMsg, DWORD dwUser, case WODM_WRITE: return wodWrite(wDevID, (LPWAVEHDR) dwParam1, dwParam2); case WODM_PAUSE: return wodPause(wDevID); case WODM_GETPOS: return wodGetPosition(wDevID, (LPMMTIME) dwParam1, dwParam2); - case WODM_BREAKLOOP: return MMSYSERR_NOTSUPPORTED; + case WODM_BREAKLOOP: return wodBreakLoop(wDevID); case WODM_PREPARE: return wodPrepare(wDevID, (LPWAVEHDR)dwParam1, dwParam2); case WODM_UNPREPARE: return wodUnprepare(wDevID, (LPWAVEHDR)dwParam1, dwParam2);