diff options
author | Matthew Hoops | 2011-09-20 10:56:30 -0400 |
---|---|---|
committer | Matthew Hoops | 2011-09-20 10:56:30 -0400 |
commit | d29e50504176c76b6f86cd5b6d6e43e923de170c (patch) | |
tree | 39452bc2afe476096ae45c90008af880b5edb840 | |
parent | 6ed2679cf1442cb647351792c97b126195a649e7 (diff) | |
download | scummvm-rg350-d29e50504176c76b6f86cd5b6d6e43e923de170c.tar.gz scummvm-rg350-d29e50504176c76b6f86cd5b6d6e43e923de170c.tar.bz2 scummvm-rg350-d29e50504176c76b6f86cd5b6d6e43e923de170c.zip |
PEGASUS: Update timer code a bit to make it friendlier for movies
-rwxr-xr-x | engines/pegasus/timers.cpp | 16 | ||||
-rwxr-xr-x | engines/pegasus/timers.h | 2 |
2 files changed, 10 insertions, 8 deletions
diff --git a/engines/pegasus/timers.cpp b/engines/pegasus/timers.cpp index 1699867314..ab0e4da31d 100755 --- a/engines/pegasus/timers.cpp +++ b/engines/pegasus/timers.cpp @@ -223,17 +223,19 @@ void TimeBase::checkCallBacks() { // TODO: Update the slaves? + Common::Rational time = getTime(); + // Check if we've triggered any callbacks for (TimeBaseCallBack *runner = _callBackList; runner != 0; runner = runner->_nextCallBack) { if (runner->_type == kCallBackAtTime && runner->_trigger == kTriggerTimeFwd) { - if (_time >= (runner->_param2 * _preferredScale / runner->_param3) && getRate() > 0) + if (time >= (runner->_param2 * _preferredScale / runner->_param3) && getRate() > 0) runner->callBack(); } else if (runner->_type == kCallBackAtExtremes) { if (runner->_trigger == kTriggerAtStop) { - if (_time == stopTime) + if (time == stopTime) runner->callBack(); } else if (runner->_trigger == kTriggerAtStart) { - if (_time == startTime) + if (time == startTime) runner->callBack(); } } @@ -241,10 +243,10 @@ void TimeBase::checkCallBacks() { // Loop if necessary if (getFlags() & kLoopTimeBase) { - if (_time == startTime) - _time = stopTime; - else if (_time == stopTime) - _time = startTime; + if (time == startTime) + setTime(_stopTime, _stopScale); + else if (time == stopTime) + setTime(_startTime, _startScale); } } diff --git a/engines/pegasus/timers.h b/engines/pegasus/timers.h index 04dd235dae..a40a2c179b 100755 --- a/engines/pegasus/timers.h +++ b/engines/pegasus/timers.h @@ -102,7 +102,7 @@ public: void disposeAllCallBacks(); // ScummVM's API additions (to replace the need for actual timers) - void checkCallBacks(); + virtual void checkCallBacks(); protected: void addCallBack(TimeBaseCallBack *); |