From fa92148098c2ea5302e6b324e289fed118d6ace3 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Mon, 19 Dec 2011 18:06:56 -0500 Subject: PEGASUS: Fix timers starting when paused TimeBase now has its own pause time adjustment instead of using getTotalPlayTime() --- engines/pegasus/timers.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'engines/pegasus/timers.cpp') 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; -- cgit v1.2.3