From d29e50504176c76b6f86cd5b6d6e43e923de170c Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 20 Sep 2011 10:56:30 -0400 Subject: PEGASUS: Update timer code a bit to make it friendlier for movies --- engines/pegasus/timers.cpp | 16 +++++++++------- engines/pegasus/timers.h | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'engines/pegasus') 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 *); -- cgit v1.2.3