diff --git a/src/gui/midi.cpp b/src/gui/midi.cpp index 7360faa5..a3a29823 100644 --- a/src/gui/midi.cpp +++ b/src/gui/midi.cpp @@ -42,8 +42,9 @@ Bit8u MIDI_evt_len[256] = { 0,2,3,2, 0,0,1,1, 1,0,1,1, 1,0,1,1 // 0xf0 }; - +#define SYSEX_SIZE 1024 + #if defined (WIN32) #include "midi_win32.h" @@ -69,7 +70,7 @@ static struct { Bit32u cmd_msg; Bit8u data[4]; struct { - Bit8u buf[256]; + Bit8u buf[SYSEX_SIZE]; Bitu used; bool active; } sysex; @@ -80,7 +81,7 @@ static struct { void MIDI_RawOutByte(Bit8u data) { /* Test for a new status byte */ if (midi.sysex.active && !(data&0x80)) { - if (midi.sysex.used<256) midi.sysex.buf[midi.sysex.used++]=data; + if (midi.sysex.used<(SYSEX_SIZE-1)) midi.sysex.buf[midi.sysex.used++]=data; return; } else if (data&0x80) { if (midi.sysex.active) { diff --git a/src/gui/midi_oss.h b/src/gui/midi_oss.h index 2141392d..a45e25bc 100644 --- a/src/gui/midi_oss.h +++ b/src/gui/midi_oss.h @@ -23,7 +23,7 @@ static int m_device; #define SEQ_MIDIPUTC 5 static void MIDI_PlaySysex(Bit8u * sysex,Bitu len) { - Bit8u buf[1024];Bitu pos=0; + Bit8u buf[SYSEX_SIZE*4];Bitu pos=0; for (;len>0;len--) { buf[pos++] = SEQ_MIDIPUTC; buf[pos++] = *sysex++; diff --git a/src/gui/midi_win32.h b/src/gui/midi_win32.h index 5501e53c..5f30c293 100644 --- a/src/gui/midi_win32.h +++ b/src/gui/midi_win32.h @@ -24,7 +24,6 @@ static HMIDIOUT m_out; static MIDIHDR m_hdr; static HANDLE m_event; -static Bit8u m_msg[300]; static void MIDI_PlaySysex(Bit8u * sysex,Bitu len) { @@ -33,9 +32,8 @@ static void MIDI_PlaySysex(Bit8u * sysex,Bitu len) { return; } midiOutUnprepareHeader (m_out, &m_hdr, sizeof (m_hdr)); - memcpy (&m_msg, sysex, len); - m_hdr.lpData = (char *) m_msg; + m_hdr.lpData = (char *) sysex; m_hdr.dwBufferLength = len ; m_hdr.dwBytesRecorded = len ; m_hdr.dwUser = 0;