winecoreaudio.drv: Add support for waveOutBreakLoop/WODM_BREAKLOOP.

This commit is contained in:
Ken Thomases 2009-02-05 15:49:04 -06:00 committed by Alexandre Julliard
parent ad0a5f1bd2
commit 4cfa5b875c

View file

@ -1328,6 +1328,36 @@ static DWORD wodReset(WORD wDevID)
return MMSYSERR_NOERROR;
}
/**************************************************************************
* 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]
*/
@ -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);