[PATCH 4/4] [v2] winmm: Fix MEVT_LONGMSG handling in MIDI stream.

Andrew Eikum aeikum at codeweavers.com
Thu Apr 5 10:32:35 CDT 2018


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Thu, Apr 05, 2018 at 12:41:24AM +0900, Akihiro Sagawa wrote:
> In v2, just rebased.
> 
> Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
> ---
>  dlls/winmm/tests/midi.c |  2 +-
>  dlls/winmm/winmm.c      | 12 ++++++++++--
>  2 files changed, 11 insertions(+), 3 deletions(-)
> 

> diff --git a/dlls/winmm/tests/midi.c b/dlls/winmm/tests/midi.c
> index 0ea3d92..97cef2d 100644
> --- a/dlls/winmm/tests/midi.c
> +++ b/dlls/winmm/tests/midi.c
> @@ -819,7 +819,7 @@ static void test_midiStream(UINT udev, HWND hwnd)
>          e->dwEvent = MEVT_F_LONG | sizeof(SysEx_volume_off);
>          memcpy(&e->dwParms[0], SysEx_volume_off, sizeof(SysEx_volume_off));
>          p += sizeof(MIDISHORTEVENT) + ROUNDUP4(sizeof(SysEx_volume_off));
> -        /* Note On (FIXME: we shouldn't hear this voice due to volume settings) */
> +        /* Note On (We can't hear this voice due to volume settings) */
>          e = (MIDIEVENT *)p;
>          e->dwEvent = MEVT_F_SHORT | 0x6F4593; /* note #69 */
>          p += sizeof(MIDISHORTEVENT);
> diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
> index 1412d5e..faeb474 100644
> --- a/dlls/winmm/winmm.c
> +++ b/dlls/winmm/winmm.c
> @@ -1169,8 +1169,16 @@ start_header:
>  	    /* do nothing, skip bytes */
>  	    break;
>  	case MEVT_LONGMSG:
> -	    midiOutLongMsg(lpMidiStrm->hDevice, lpMidiStrm->lpMidiHdr, MEVT_EVENTPARM(me->dwEvent));
> -	    break;
> +        {
> +            MIDIHDR mh;
> +            memset(&mh, 0, sizeof(mh));
> +            mh.lpData = (LPSTR)me->dwParms;
> +            mh.dwBufferLength = MEVT_EVENTPARM(me->dwEvent);
> +            midiOutPrepareHeader(lpMidiStrm->hDevice, &mh, sizeof(mh));
> +            midiOutLongMsg(lpMidiStrm->hDevice, &mh, sizeof(mh));
> +            midiOutUnprepareHeader(lpMidiStrm->hDevice, &mh, sizeof(mh));
> +            break;
> +        }
>  	case MEVT_NOP:
>  	    break;
>  	case MEVT_SHORTMSG:

> 




More information about the wine-devel mailing list