[Scummvm-cvs-logs] scummvm master -> 83ce4cfb5e72975805875000200e8ab2ff2c8319
fuzzie
fuzzie at fuzzie.org
Mon Jan 27 00:11:07 CET 2014
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
83ce4cfb5e Revert "AUDIO: fix invalid mem access in midiparser.cpp"
Commit: 83ce4cfb5e72975805875000200e8ab2ff2c8319
https://github.com/scummvm/scummvm/commit/83ce4cfb5e72975805875000200e8ab2ff2c8319
Author: Alyssa Milburn (fuzzie at fuzzie.org)
Date: 2014-01-26T15:08:57-08:00
Commit Message:
Revert "AUDIO: fix invalid mem access in midiparser.cpp"
This broke SCI, since it doesn't call processEvent any more.
This reverts commit afa54072a9622d7a370846bf280016843dc61009.
Changed paths:
audio/midiparser.cpp
diff --git a/audio/midiparser.cpp b/audio/midiparser.cpp
index 6840cfc..2454575 100644
--- a/audio/midiparser.cpp
+++ b/audio/midiparser.cpp
@@ -214,21 +214,6 @@ void MidiParser::onTimer() {
activeNote(info.channel(), info.basic.param1, true);
}
- if (info.event == 0xFF && info.ext.type == 0x2F) {
- // End of Track must be processed by us, as well as sending it to the output device.
- // It must be processed here instead of inside processEvent() to avoid invalid mem access,
- // since Player::metaEvent() in SCUMM will delete the parser object.
- if (_autoLoop) {
- jumpToTick(0);
- parseNextEvent(_nextEvent);
- } else {
- stopPlaying();
- _driver->metaEvent(info.ext.type, info.ext.data, (uint16)info.length);
- }
- return;
-
- }
-
processEvent(info);
if (_abortParse)
@@ -255,7 +240,21 @@ void MidiParser::processEvent(const EventInfo &info, bool fireEvents) {
_driver->sysEx(info.ext.data, (uint16)info.length);
}
} else if (info.event == 0xFF) {
- if (info.ext.type == 0x51) {
+ // META event
+ if (info.ext.type == 0x2F) {
+ // End of Track must be processed by us,
+ // as well as sending it to the output device.
+ if (_autoLoop) {
+ jumpToTick(0);
+ parseNextEvent(_nextEvent);
+ } else {
+ stopPlaying();
+ if (fireEvents)
+ _driver->metaEvent(info.ext.type, info.ext.data, (uint16)info.length);
+ }
+ _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]);
}
More information about the Scummvm-git-logs
mailing list