[WINEOSS/WINEALSA] Some midi fixes
Christian Costa
titan.costa at wanadoo.fr
Tue Feb 3 15:43:52 CST 2004
Hi,
Just some midi fixes.
Bye.
Changelog :
Added missing notifications to MIDI_NotifyClient.
Made checks less strict in midPrepare, only return an error for buffer
in queue.
Fixed time of input events in Alsa driver.
Christian Costa titan.costa at wanadoo.fr
-------------- next part --------------
Index: dlls/winmm/wineoss/midi.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineoss/midi.c,v
retrieving revision 1.36
diff -u -r1.36 midi.c
--- dlls/winmm/wineoss/midi.c 5 Sep 2003 23:08:27 -0000 1.36
+++ dlls/winmm/wineoss/midi.c 3 Feb 2004 20:28:43 -0000
@@ -348,6 +348,7 @@
case MOM_OPEN:
case MOM_CLOSE:
case MOM_DONE:
+ case MOM_POSITIONCB:
if (wDevID > MODM_NumDevs)
return MMSYSERR_BADDEVICEID;
@@ -360,7 +361,10 @@
case MIM_OPEN:
case MIM_CLOSE:
case MIM_DATA:
+ case MIM_LONGDATA:
case MIM_ERROR:
+ case MIM_LONGERROR:
+ case MIM_MOREDATA:
if (wDevID > MIDM_NumDevs)
return MMSYSERR_BADDEVICEID;
@@ -771,7 +775,7 @@
TRACE("(%04X, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
if (dwSize < sizeof(MIDIHDR) || lpMidiHdr == 0 ||
- lpMidiHdr->lpData == 0 || lpMidiHdr->dwFlags != 0 ||
+ lpMidiHdr->lpData == 0 || (lpMidiHdr->dwFlags & MHDR_INQUEUE) != 0 ||
lpMidiHdr->dwBufferLength >= 0x10000ul)
return MMSYSERR_INVALPARAM;
Index: dlls/winmm/winealsa/midi.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winealsa/midi.c,v
retrieving revision 1.6
diff -u -r1.6 midi.c
--- dlls/winmm/winealsa/midi.c 13 Jan 2004 01:05:34 -0000 1.6
+++ dlls/winmm/winealsa/midi.c 3 Feb 2004 20:28:46 -0000
@@ -173,6 +173,7 @@
case MOM_OPEN:
case MOM_CLOSE:
case MOM_DONE:
+ case MOM_POSITIONCB:
if (wDevID > MODM_NumDevs)
return MMSYSERR_BADDEVICEID;
@@ -185,7 +186,10 @@
case MIM_OPEN:
case MIM_CLOSE:
case MIM_DATA:
+ case MIM_LONGDATA:
case MIM_ERROR:
+ case MIM_LONGERROR:
+ case MIM_MOREDATA:
if (wDevID > MIDM_NumDevs)
return MMSYSERR_BADDEVICEID;
@@ -361,8 +365,7 @@
if (toSend != 0) {
TRACE("Sending event %08lx (from %d %d)\n", toSend, ev->source.client, ev->source.port);
/* FIXME: Should use ev->time instead for better accuracy */
- dwTime -= MidiInDev[wDevID].startTime;
- if (MIDI_NotifyClient(wDevID, MIM_DATA, toSend, dwTime) != MMSYSERR_NOERROR) {
+ if (MIDI_NotifyClient(wDevID, MIM_DATA, toSend, dwTime-MidiInDev[wDevID].startTime) != MMSYSERR_NOERROR) {
WARN("Couldn't notify client\n");
}
}
@@ -547,7 +550,7 @@
TRACE("(%04X, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
if (dwSize < sizeof(MIDIHDR) || lpMidiHdr == 0 ||
- lpMidiHdr->lpData == 0 || lpMidiHdr->dwFlags != 0 ||
+ lpMidiHdr->lpData == 0 || (lpMidiHdr->dwFlags & MHDR_INQUEUE) != 0 ||
lpMidiHdr->dwBufferLength >= 0x10000ul)
return MMSYSERR_INVALPARAM;
More information about the wine-patches
mailing list