winecoreaudio.drv: Add support for waveOutBreakLoop/WODM_BREAKLOOP.
This commit is contained in:
parent
ad0a5f1bd2
commit
4cfa5b875c
|
@ -1328,6 +1328,36 @@ static DWORD wodReset(WORD wDevID)
|
||||||
return MMSYSERR_NOERROR;
|
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]
|
* 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_WRITE: return wodWrite(wDevID, (LPWAVEHDR) dwParam1, dwParam2);
|
||||||
case WODM_PAUSE: return wodPause(wDevID);
|
case WODM_PAUSE: return wodPause(wDevID);
|
||||||
case WODM_GETPOS: return wodGetPosition(wDevID, (LPMMTIME) dwParam1, dwParam2);
|
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_PREPARE: return wodPrepare(wDevID, (LPWAVEHDR)dwParam1, dwParam2);
|
||||||
case WODM_UNPREPARE: return wodUnprepare(wDevID, (LPWAVEHDR)dwParam1, dwParam2);
|
case WODM_UNPREPARE: return wodUnprepare(wDevID, (LPWAVEHDR)dwParam1, dwParam2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue