aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Hoops2012-03-20 17:31:36 -0400
committerMatthew Hoops2012-03-20 17:31:36 -0400
commit6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5 (patch)
tree80e0f47cdba1d9efd10542fc074cf62e08581cfe /engines
parentb2c29410b9e66566ee5c9faad79b58696a6f3095 (diff)
downloadscummvm-rg350-6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5.tar.gz
scummvm-rg350-6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5.tar.bz2
scummvm-rg350-6a786129cf04eb9a5ee693750b7ca7e1f9c40ac5.zip
PEGASUS: Fix striding
Diffstat (limited to 'engines')
-rwxr-xr-xengines/pegasus/timers.cpp6
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) {