Module: wine Branch: master Commit: e8c083f9d5d92c50ea384ce4e3303368d686ac31 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e8c083f9d5d92c50ea384ce4e3...
Author: Emmanuel Maillard mahanuu@free.fr Date: Thu Apr 26 22:56:10 2007 +0200
winecoreaudio: Implement MIDIIn_Reset.
---
dlls/winecoreaudio.drv/midi.c | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/dlls/winecoreaudio.drv/midi.c b/dlls/winecoreaudio.drv/midi.c index 29bf875..27b06cd 100644 --- a/dlls/winecoreaudio.drv/midi.c +++ b/dlls/winecoreaudio.drv/midi.c @@ -699,6 +699,31 @@ static DWORD MIDIIn_Stop(WORD wDevID) return MMSYSERR_NOERROR; }
+static DWORD MIDIIn_Reset(WORD wDevID) +{ + DWORD dwTime = GetTickCount(); + + TRACE("%d\n", wDevID); + if (wDevID >= MIDIIn_NumDevs) { + WARN("bad device ID : %d\n", wDevID); + return MMSYSERR_BADDEVICEID; + } + + EnterCriticalSection(&midiInLock); + while (sources[wDevID].lpQueueHdr) { + sources[wDevID].lpQueueHdr->dwFlags &= ~MHDR_INQUEUE; + sources[wDevID].lpQueueHdr->dwFlags |= MHDR_DONE; + /* FIXME: when called from 16 bit, lpQueueHdr needs to be a segmented ptr */ + if (MIDI_NotifyClient(wDevID, MIM_LONGDATA, (DWORD)sources[wDevID].lpQueueHdr, dwTime) != MMSYSERR_NOERROR) { + WARN("Couldn't notify client\n"); + } + sources[wDevID].lpQueueHdr = (LPMIDIHDR)sources[wDevID].lpQueueHdr->lpNext; + } + LeaveCriticalSection(&midiInLock); + + return MMSYSERR_NOERROR; +} + /* * MIDI In Mach message handling */ @@ -839,8 +864,8 @@ DWORD WINAPI CoreAudio_midMessage(UINT wDevID, UINT wMsg, DWORD dwUser, DWORD dw return MIDIIn_Start(wDevID); case MIDM_STOP: return MIDIIn_Stop(wDevID); - case MIDM_RESET: + return MIDIIn_Reset(wDevID); default: TRACE("Unsupported message\n"); }