aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
diff options
context:
space:
mode:
authorFilippos Karapetis2010-08-29 00:39:33 +0000
committerFilippos Karapetis2010-08-29 00:39:33 +0000
commit9096848e4b0411daa3cd54a677bafc13e2312082 (patch)
tree6127a59517ec107d95b16cefed109710a234673f /engines/sci/graphics
parent3f1f894e8eeb091153963b8b936b533f78f17e4a (diff)
downloadscummvm-rg350-9096848e4b0411daa3cd54a677bafc13e2312082.tar.gz
scummvm-rg350-9096848e4b0411daa3cd54a677bafc13e2312082.tar.bz2
scummvm-rg350-9096848e4b0411daa3cd54a677bafc13e2312082.zip
SCI: Throttle the invocations of Engine::shouldQuit()
SCI constantly invoked Engine::shouldQuit(), which in turn called 2 virtual functions. This added a significant overhead, as this was called constantly without any throttling whatsoever. Now, the invocation of shouldQuit() is throttled to be on each frame update (i.e. at a rate of 60fps). Thanks to wjp for profiling this. svn-id: r52431
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r--engines/sci/graphics/animate.cpp2
-rw-r--r--engines/sci/graphics/portrait.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp
index 8e6707f262..cd188bed8a 100644
--- a/engines/sci/graphics/animate.cpp
+++ b/engines/sci/graphics/animate.cpp
@@ -96,7 +96,7 @@ bool GfxAnimate::invoke(List *list, int argc, reg_t *argv) {
invokeSelector(_s, curObject, SELECTOR(doit), argc, argv, 0);
// If a game is being loaded, stop processing
- if (_s->abortScriptProcessing != kAbortNone || g_engine->shouldQuit())
+ if (_s->abortScriptProcessing != kAbortNone)
return true; // Stop processing
// Lookup node again, since the nodetable it was in may have been reallocated.
diff --git a/engines/sci/graphics/portrait.cpp b/engines/sci/graphics/portrait.cpp
index 8f4fe094a8..f21fa39476 100644
--- a/engines/sci/graphics/portrait.cpp
+++ b/engines/sci/graphics/portrait.cpp
@@ -185,7 +185,7 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
curEvent = _event->getSciEvent(SCI_EVENT_ANY);
if (curEvent.type == SCI_EVENT_MOUSE_PRESS ||
(curEvent.type == SCI_EVENT_KEYBOARD && curEvent.data == SCI_KEY_ESC) ||
- g_engine->shouldQuit())
+ g_sci->getEngineState()->abortScriptProcessing == kAbortQuitGame)
userAbort = true;
curPosition = _audio->getAudioPosition();
} while ((curPosition != -1) && (curPosition < timerPosition) && (!userAbort));