aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/event.cpp
diff options
context:
space:
mode:
authorColin Snover2017-07-22 15:54:05 -0500
committerColin Snover2017-07-23 10:35:13 -0500
commit0beb259278dfd18757bf9484a6123edf4b44864e (patch)
treeac40430c241b1423946a87b91deb999250494f7e /engines/sci/event.cpp
parent6b87b13ab1ead1115cce6a897ee78c4eba45d76d (diff)
downloadscummvm-rg350-0beb259278dfd18757bf9484a6123edf4b44864e.tar.gz
scummvm-rg350-0beb259278dfd18757bf9484a6123edf4b44864e.tar.bz2
scummvm-rg350-0beb259278dfd18757bf9484a6123edf4b44864e.zip
SCI32: Improve performance when flushing events during video playback
Calling through EventManager::getSciEvent to flush events is pretty inefficient and created stalls that lead to dropped frames during the chapter 7 chase in Phantasmagoria 1. If necessary, performance could be improved further by extending Common::EventManager to expose SDL_FlushEvents, but this seems to finish in 0-1ms so should be OK for now. Refs Trac#9974, Trac#9975.
Diffstat (limited to 'engines/sci/event.cpp')
-rw-r--r--engines/sci/event.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp
index 873b6bb48a..b1be46aded 100644
--- a/engines/sci/event.cpp
+++ b/engines/sci/event.cpp
@@ -408,6 +408,13 @@ SciEvent EventManager::getSciEvent(uint32 mask) {
return event;
}
+void EventManager::flushEvents() {
+ Common::EventManager *em = g_system->getEventManager();
+ Common::Event event;
+ while (em->pollEvent(event));
+ _events.clear();
+}
+
#ifdef ENABLE_SCI32
void EventManager::setHotRectanglesActive(const bool active) {
_hotRectanglesActive = active;