aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
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) {