diff options
author | Matthew Hoops | 2012-03-20 17:31:36 -0400 |
---|---|---|
committer | Matthew Hoops | 2012-03-20 17:31:36 -0400 |
commit | 6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5 (patch) | |
tree | 80e0f47cdba1d9efd10542fc074cf62e08581cfe /engines/pegasus | |
parent | b2c29410b9e66566ee5c9faad79b58696a6f3095 (diff) | |
download | scummvm-rg350-6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5.tar.gz scummvm-rg350-6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5.tar.bz2 scummvm-rg350-6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5.zip |
PEGASUS: Fix striding
Diffstat (limited to 'engines/pegasus')
-rwxr-xr-x | engines/pegasus/timers.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/pegasus/timers.cpp b/engines/pegasus/timers.cpp index 5b7c903ad6..d03ce917ed 100755 --- a/engines/pegasus/timers.cpp +++ b/engines/pegasus/timers.cpp @@ -244,8 +244,12 @@ void TimeBase::checkCallBacks() { if (runner->_type == kCallBackAtTime && runner->_trigger == kTriggerTimeFwd) { if (getTime() >= (runner->_param2 * _preferredScale / runner->_param3) && getRate() > 0) { + uint param2 = runner->_param2, param3 = runner->_param3; runner->callBack(); - runner->_hasBeenTriggered = true; + // HACK: Only stop future time forward callbacks if the parameters have not been changed + // This fixes striding callbacks. Since only striding callbacks do this kind of + // craziness, I'm not too worried about this. + runner->_hasBeenTriggered = (runner->_param2 == param2 && runner->_param3 == param3); } } else if (runner->_type == kCallBackAtExtremes) { if (runner->_trigger == kTriggerAtStop) { |