aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/timer.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-03-08 02:17:14 +0000
committerFlorian Kagerer2009-03-08 02:17:14 +0000
commite23fd08dfbdac9d6eedb78813d3504eeccba31a5 (patch)
treeba0a0c81477f8327a2b8275e27cf17fecc12b3da /engines/kyra/timer.cpp
parentcc89a46a0ef8b9bd62e69ab0d6a8c1e28bc46781 (diff)
downloadscummvm-rg350-e23fd08dfbdac9d6eedb78813d3504eeccba31a5.tar.gz
scummvm-rg350-e23fd08dfbdac9d6eedb78813d3504eeccba31a5.tar.bz2
scummvm-rg350-e23fd08dfbdac9d6eedb78813d3504eeccba31a5.zip
LOL: fixed bug reported by MD5 (crashes and freezes caused by calls to non-existent sub scripts)
svn-id: r39209
Diffstat (limited to 'engines/kyra/timer.cpp')
-rw-r--r--engines/kyra/timer.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/engines/kyra/timer.cpp b/engines/kyra/timer.cpp
index 88b86393c8..c3ebad852a 100644
--- a/engines/kyra/timer.cpp
+++ b/engines/kyra/timer.cpp
@@ -122,9 +122,9 @@ void TimerManager::update() {
_nextRun += 99999;
for (Iterator pos = _timers.begin(); pos != _timers.end(); ++pos) {
- if (pos->enabled)
+ if (pos->enabled == 1)
- if (pos->enabled && pos->countdown >= 0) {
+ if (pos->enabled == 1 && pos->countdown >= 0) {
if (pos->nextRun <= _system->getMillis()) {
if (pos->func && pos->func->isValid()) {
(*pos->func)(pos->id);
@@ -138,7 +138,6 @@ void TimerManager::update() {
_nextRun = MIN(_nextRun, pos->nextRun);
}
}
-
}
void TimerManager::resync() {
@@ -229,10 +228,10 @@ void TimerManager::pauseSingleTimer(uint8 id, bool p) {
if (p) {
timer->pauseStartTime = _system->getMillis();
- timer->enabled = 0;
+ timer->enabled ^= 2;
} else if (timer->pauseStartTime) {
int32 elapsedTime = _system->getMillis() - timer->pauseStartTime;
- timer->enabled = 1;
+ timer->enabled ^= 2;
timer->lastUpdate += elapsedTime;
timer->nextRun += elapsedTime;
resync();
@@ -256,7 +255,7 @@ void TimerManager::enable(uint8 id) {
Iterator timer = Common::find_if(_timers.begin(), _timers.end(), TimerEqual(id));
if (timer != _timers.end())
- timer->enabled = 1;
+ timer->enabled |= 1;
else
warning("TimerManager::enable: No timer %d", id);
}
@@ -266,7 +265,7 @@ void TimerManager::disable(uint8 id) {
Iterator timer = Common::find_if(_timers.begin(), _timers.end(), TimerEqual(id));
if (timer != _timers.end())
- timer->enabled = 0;
+ timer->enabled &= 2;
else
warning("TimerManager::disable: No timer %d", id);
}