MIDI In support set 2 (5/7)
Emmanuel Maillard
mahanuu at free.fr
Thu Apr 26 16:22:05 CDT 2007
Changelog :
- implement MIDIIn_Reset
-------------- next part --------------
From 99c130bad0c19acb094a2c47f7e302a039cf78be Mon Sep 17 00:00:00 2001
From: Emmanuel Maillard <mahanuu at free.fr>
Date: Thu, 26 Apr 2007 22:56:10 +0200
Subject: [PATCH] - 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 37d5903..6efe057 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 w
return MIDIIn_Start(wDevID);
case MIDM_STOP:
return MIDIIn_Stop(wDevID);
-
case MIDM_RESET:
+ return MIDIIn_Reset(wDevID);
default:
TRACE("Unsupported message\n");
}
--
1.4.4
More information about the wine-patches
mailing list