[PATCH] winealsa.drv: Fix handling of system real time MIDI messages
Bruno Jesus
00cpxxx at gmail.com
Tue Jan 31 00:16:17 CST 2017
MIDI spec at http://www.somascape.org/midi/tech/spec.html state that system real time messages "... are each single byte messages, with no following data bytes...", currently wine is prepending SYSEX header generating invalid messages.
A comparison before and after patch using gmidimonitor as ouput MIDI port:
http://alexa.pro.br/~bruno/wine/midi.png
I believe the patch to be correct, I don't own any MIDI hardware to test but gmidimonitor seems good enough.
Fixes bug https://bugs.winehq.org/show_bug.cgi?id=39048
Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
---
dlls/winealsa.drv/midi.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/winealsa.drv/midi.c b/dlls/winealsa.drv/midi.c
index 6fc75ee..6ef1976 100644
--- a/dlls/winealsa.drv/midi.c
+++ b/dlls/winealsa.drv/midi.c
@@ -909,10 +909,15 @@ static DWORD modData(WORD wDevID, DWORD dwParam)
case 0x0B: /* Continue */
case 0x0C: /* Stop */
case 0x0E: /* Active Sensing. */
- /* FIXME: Is this function suitable for these purposes
- (and also Song Select and Song Position Pointer) */
- snd_seq_ev_set_sysex(&event, 1, &evt);
+ {
+ snd_midi_event_t *midi_event;
+
+ snd_midi_event_new(1, &midi_event);
+ snd_midi_event_init(midi_event);
+ snd_midi_event_encode_byte(midi_event, evt, &event);
+ snd_midi_event_free(midi_event);
break;
+ }
case 0x0F: /* Reset */
/* snd_seq_ev_set_sysex(&event, 1, &evt);
this other way may be better */
--
2.9.3
More information about the wine-patches
mailing list