mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 17:14:06 +00:00
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.
This commit is contained in:
parent
64851e1664
commit
485390de6f
|
@ -173,6 +173,7 @@ static DWORD MIDI_NotifyClient(UINT wDevID, WORD wMsg,
|
|||
case MOM_OPEN:
|
||||
case MOM_CLOSE:
|
||||
case MOM_DONE:
|
||||
case MOM_POSITIONCB:
|
||||
if (wDevID > MODM_NumDevs)
|
||||
return MMSYSERR_BADDEVICEID;
|
||||
|
||||
|
@ -185,7 +186,10 @@ static DWORD MIDI_NotifyClient(UINT wDevID, WORD wMsg,
|
|||
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 @@ static VOID WINAPI midTimeCallback(HWND hwnd, UINT msg, UINT id, DWORD dwTime)
|
|||
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 @@ static DWORD midPrepare(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
|
|||
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;
|
||||
|
||||
|
|
|
@ -348,6 +348,7 @@ static DWORD MIDI_NotifyClient(UINT wDevID, WORD wMsg,
|
|||
case MOM_OPEN:
|
||||
case MOM_CLOSE:
|
||||
case MOM_DONE:
|
||||
case MOM_POSITIONCB:
|
||||
if (wDevID > MODM_NumDevs)
|
||||
return MMSYSERR_BADDEVICEID;
|
||||
|
||||
|
@ -360,7 +361,10 @@ static DWORD MIDI_NotifyClient(UINT wDevID, WORD wMsg,
|
|||
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 @@ static DWORD midPrepare(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
|
|||
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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue