diff options
| author | Matthew Hoops | 2012-03-20 14:18:57 -0400 |
|---|---|---|
| committer | Matthew Hoops | 2012-03-20 14:49:16 -0400 |
| commit | 71756bdf4eae5ba9cc3f329b85e894f04640aaef (patch) | |
| tree | 40d464262da107ab5eed82f198685209161ebac1 /common/EventDispatcher.cpp | |
| parent | 03eba05b09e5c9e5a351f8111185934b92a3fed3 (diff) | |
| parent | 3c3576a224b92c703b4e8ea20008ac8a069980dd (diff) | |
| download | scummvm-rg350-71756bdf4eae5ba9cc3f329b85e894f04640aaef.tar.gz scummvm-rg350-71756bdf4eae5ba9cc3f329b85e894f04640aaef.tar.bz2 scummvm-rg350-71756bdf4eae5ba9cc3f329b85e894f04640aaef.zip | |
Merge remote branch 'upstream/master' into pegasus
Diffstat (limited to 'common/EventDispatcher.cpp')
| -rw-r--r-- | common/EventDispatcher.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/common/EventDispatcher.cpp b/common/EventDispatcher.cpp index 4e3f671cfd..012a2dfce5 100644 --- a/common/EventDispatcher.cpp +++ b/common/EventDispatcher.cpp @@ -48,26 +48,24 @@ void EventDispatcher::dispatch() { dispatchPoll(); for (List<SourceEntry>::iterator i = _sources.begin(); i != _sources.end(); ++i) { - const bool allowMapping = i->source->allowMapping(); - while (i->source->pollEvent(event)) { // We only try to process the events via the setup event mapper, when // we have a setup mapper and when the event source allows mapping. - if (_mapper && allowMapping) { - if (_mapper->notifyEvent(event)) { - // We allow the event mapper to create multiple events, when - // eating an event. - while (_mapper->pollEvent(event)) - dispatchEvent(event); - - // Try getting another event from the current EventSource. - continue; - } - } + assert(_mapper); + List<Event> mappedEvents = _mapper->mapEvent(event, i->source); - dispatchEvent(event); + for (List<Event>::iterator j = mappedEvents.begin(); j != mappedEvents.end(); ++j) { + const Event mappedEvent = *j; + dispatchEvent(mappedEvent); + } } } + + List<Event> delayedEvents = _mapper->getDelayedEvents(); + for (List<Event>::iterator k = delayedEvents.begin(); k != delayedEvents.end(); ++k) { + const Event delayedEvent = *k; + dispatchEvent(delayedEvent); + } } void EventDispatcher::registerMapper(EventMapper *mapper) { |
