diff options
author | Filippos Karapetis | 2010-08-29 00:39:33 +0000 |
---|---|---|
committer | Filippos Karapetis | 2010-08-29 00:39:33 +0000 |
commit | 9096848e4b0411daa3cd54a677bafc13e2312082 (patch) | |
tree | 6127a59517ec107d95b16cefed109710a234673f /engines/sci/graphics | |
parent | 3f1f894e8eeb091153963b8b936b533f78f17e4a (diff) | |
download | scummvm-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.cpp | 2 | ||||
-rw-r--r-- | engines/sci/graphics/portrait.cpp | 2 |
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)); |