diff options
author | Matthew Hoops | 2011-12-19 18:06:56 -0500 |
---|---|---|
committer | Matthew Hoops | 2011-12-19 18:06:56 -0500 |
commit | fa92148098c2ea5302e6b324e289fed118d6ace3 (patch) | |
tree | 0e9665bdf42f8dfa84e34ca1ae546914a081d2d7 /engines/pegasus/timers.cpp | |
parent | f72884cb7bbe594888f6d14a3e03c7839ef2c508 (diff) | |
download | scummvm-rg350-fa92148098c2ea5302e6b324e289fed118d6ace3.tar.gz scummvm-rg350-fa92148098c2ea5302e6b324e289fed118d6ace3.tar.bz2 scummvm-rg350-fa92148098c2ea5302e6b324e289fed118d6ace3.zip |
PEGASUS: Fix timers starting when paused
TimeBase now has its own pause time adjustment instead of using getTotalPlayTime()
Diffstat (limited to 'engines/pegasus/timers.cpp')
-rwxr-xr-x | engines/pegasus/timers.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/engines/pegasus/timers.cpp b/engines/pegasus/timers.cpp index a5cfa44a45..49071a2936 100755 --- a/engines/pegasus/timers.cpp +++ b/engines/pegasus/timers.cpp @@ -67,6 +67,7 @@ TimeBase::TimeBase(const TimeScale preferredScale) { _stopScale = 1; _master = 0; _pausedRate = 0; + _pauseStart = 0; ((PegasusEngine *)g_engine)->addTimeBase(this); } @@ -118,6 +119,7 @@ void TimeBase::pause() { _pausedRate = getRate(); stop(); _paused = true; + _pauseStart = g_system->getMillis(); } } @@ -125,6 +127,9 @@ void TimeBase::resume() { if (_paused) { setRate(_pausedRate); _paused = false; + + if (isRunning()) + _lastMillis += g_system->getMillis() - _pauseStart; } } @@ -200,9 +205,9 @@ void TimeBase::setMasterTimeBase(TimeBase *tb) { void TimeBase::updateTime() { if (_lastMillis == 0) { - _lastMillis = g_engine->getTotalPlayTime(); + _lastMillis = g_system->getMillis(); } else { - uint32 curTime = g_engine->getTotalPlayTime(); + uint32 curTime = g_system->getMillis(); if (_lastMillis == curTime) // No change return; |