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