Emmanuel Maillard : winecoreaudio: Implement MIDIIn_Reset.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Apr 27 06:43:43 CDT 2007
Module: wine
Branch: master
Commit: e8c083f9d5d92c50ea384ce4e3303368d686ac31
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e8c083f9d5d92c50ea384ce4e3303368d686ac31
Author: Emmanuel Maillard <mahanuu at 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");
}
More information about the wine-cvs
mailing list