From 438cc11f7784ffd6e307c3f0ef7098c6de2f6b92 Mon Sep 17 00:00:00 2001 From: soyer Date: Wed, 9 Jul 2025 19:53:55 +0200 Subject: [PATCH] call HandleSystemExclusive only in one place (#947) * mididevice: call HandleSystemExclusive only in one place * mididevice: add length check for performance sysex --- src/mididevice.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/mididevice.cpp b/src/mididevice.cpp index 413dd13..d07d216 100644 --- a/src/mididevice.cpp +++ b/src/mididevice.cpp @@ -337,14 +337,9 @@ void CMIDIDevice::MIDIMessageHandler (const u8 *pMessage, size_t nLength, unsign if (m_ChannelMap[nTG] == ucSysExChannel || m_ChannelMap[nTG] == OmniMode) { LOGNOTE("MIDI-SYSEX: channel: %u, len: %u, TG: %u",m_ChannelMap[nTG],nLength,nTG); - HandleSystemExclusive(pMessage, nLength, nCable, nTG); - if (nLength == 5) { - break; // Send dump request only to the first TG that matches the MIDI channel requested via the SysEx message device ID - } - // Check for TX216/TX816 style performance sysex messages - if (pMessage[3] == 0x04) + if (nLength == 7 && pMessage[3] == 0x04) { // TX816/TX216 Performance SysEx message uint8_t mTG = pMessage[2] & 0x0F; // mTG = module/tone generator number (0-7) @@ -452,6 +447,9 @@ void CMIDIDevice::MIDIMessageHandler (const u8 *pMessage, size_t nLength, unsign else { HandleSystemExclusive(pMessage, nLength, nCable, nTG); + if (nLength == 5) { + break; // Send dump request only to the first TG that matches the MIDI channel requested via the SysEx message device ID + } } } }