diff options
-rw-r--r-- | audio/midiparser.cpp | 20 | ||||
-rw-r--r-- | audio/midiparser.h | 2 |
2 files changed, 10 insertions, 12 deletions
diff --git a/audio/midiparser.cpp b/audio/midiparser.cpp index 23da903b6d..dcb83bb090 100644 --- a/audio/midiparser.cpp +++ b/audio/midiparser.cpp @@ -213,14 +213,13 @@ void MidiParser::onTimer() { activeNote(info.channel(), info.basic.param1, true); } - bool ret = processEvent(info); - if (!ret) - return; + processEvent(info); - if (!_abortParse) { - _position._lastEventTime = eventTime; - parseNextEvent(_nextEvent); - } + if (_abortParse) + break; + + _position._lastEventTime = eventTime; + parseNextEvent(_nextEvent); } if (!_abortParse) { @@ -229,7 +228,7 @@ void MidiParser::onTimer() { } } -bool MidiParser::processEvent(const EventInfo &info, bool fireEvents) { +void MidiParser::processEvent(const EventInfo &info, bool fireEvents) { if (info.event == 0xF0) { // SysEx event // Check for trailing 0xF7 -- if present, remove it. @@ -252,7 +251,8 @@ bool MidiParser::processEvent(const EventInfo &info, bool fireEvents) { if (fireEvents) _driver->metaEvent(info.ext.type, info.ext.data, (uint16)info.length); } - return false; + _abortParse = true; + return; } else if (info.ext.type == 0x51) { if (info.length >= 3) { setTempo(info.ext.data[0] << 16 | info.ext.data[1] << 8 | info.ext.data[2]); @@ -264,8 +264,6 @@ bool MidiParser::processEvent(const EventInfo &info, bool fireEvents) { if (fireEvents) sendToDriver(info.event, info.basic.param1, info.basic.param2); } - - return true; } diff --git a/audio/midiparser.h b/audio/midiparser.h index e9a8881cf6..28f39e623f 100644 --- a/audio/midiparser.h +++ b/audio/midiparser.h @@ -293,7 +293,7 @@ protected: virtual void resetTracking(); virtual void allNotesOff(); virtual void parseNextEvent(EventInfo &info) = 0; - virtual bool processEvent(const EventInfo &info, bool fireEvents = true); + virtual void processEvent(const EventInfo &info, bool fireEvents = true); void activeNote(byte channel, byte note, bool active); void hangingNote(byte channel, byte note, uint32 ticksLeft, bool recycle = true); |