aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/midiparser.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/sound/midiparser.cpp b/sound/midiparser.cpp
index 0b2408f4cf..4f16e5b72b 100644
--- a/sound/midiparser.cpp
+++ b/sound/midiparser.cpp
@@ -330,19 +330,14 @@ bool MidiParser::jumpToTick (uint32 tick, bool fireEvents) {
if (info.event == 0xFF) {
if (info.ext.type == 0x2F) { // End of track
- if (_autoLoop) {
- _position._play_pos = _tracks[_active_track];
- parseNextEvent (_next_event);
- } else {
- _position = currentPos;
- _next_event = currentEvent;
- return false;
- }
- break;
- } else if (info.ext.type == 0x51) { // Tempo
- if (info.length >= 3) {
+ _position = currentPos;
+ _next_event = currentEvent;
+ return false;
+ } else {
+ if (info.ext.type == 0x51 && info.length >= 3) // Tempo
setTempo (info.ext.data[0] << 16 | info.ext.data[1] << 8 | info.ext.data[2]);
- }
+ if (fireEvents)
+ _driver->metaEvent (info.ext.type, info.ext.data, (uint16) info.length);
}
} else if (fireEvents) {
if (info.event == 0xF0)