diff options
| -rw-r--r-- | engines/sci/sound/midiparser_sci.cpp | 9 | ||||
| -rw-r--r-- | engines/sci/sound/midiparser_sci.h | 1 | 
2 files changed, 7 insertions, 3 deletions
| diff --git a/engines/sci/sound/midiparser_sci.cpp b/engines/sci/sound/midiparser_sci.cpp index 9546b1503f..00089cd4c3 100644 --- a/engines/sci/sound/midiparser_sci.cpp +++ b/engines/sci/sound/midiparser_sci.cpp @@ -57,6 +57,7 @@ MidiParser_SCI::MidiParser_SCI(SciVersion soundVersion, SciMusic *music) :  	_signalToSet = 0;  	_dataincAdd = false;  	_dataincToAdd = 0; +	_jumpToHoldTick = false;  	_resetOnPause = false;  	_pSnd = 0;  } @@ -452,6 +453,10 @@ void MidiParser_SCI::parseNextEvent(EventInfo &info) {  		debugC(4, kDebugLevelSound, "signal %04x", _signalToSet);  	} +	if (_jumpToHoldTick) { +		_jumpToHoldTick = false; +		jumpToTick(_loopTick, false, false); +	}  	info.start = _position._playPos;  	info.delta = 0; @@ -532,9 +537,7 @@ void MidiParser_SCI::parseNextEvent(EventInfo &info) {  				// marker set for that song by cmdSetSoundHold.  				// If it is, loop back, but don't stop notes when jumping.  				if (info.basic.param2 == _pSnd->hold) { -					uint32 extraDelta = info.delta; -					jumpToTick(_loopTick, false, false); -					_nextEvent.delta += extraDelta; +					_jumpToHoldTick = true;  				}  				break;  			case kUpdateCue: diff --git a/engines/sci/sound/midiparser_sci.h b/engines/sci/sound/midiparser_sci.h index d3fd337644..7bd68994c8 100644 --- a/engines/sci/sound/midiparser_sci.h +++ b/engines/sci/sound/midiparser_sci.h @@ -110,6 +110,7 @@ protected:  	int16 _signalToSet;  	bool _dataincAdd;  	int16 _dataincToAdd; +	bool _jumpToHoldTick;  	bool _resetOnPause;  	bool _channelUsed[16]; | 
