diff options
-rw-r--r-- | common/events.cpp | 6 | ||||
-rw-r--r-- | common/events.h | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/common/events.cpp b/common/events.cpp index 9cb5d8aba6..149b4936a9 100644 --- a/common/events.cpp +++ b/common/events.cpp @@ -51,8 +51,12 @@ void EventDispatcher::dispatch() { Common::Event event; for (Common::List<SourceEntry>::iterator i = _sources.begin(); i != _sources.end(); ++i) { + const bool allowMapping = i->source->allowMapping(); + while (i->source->pollEvent(event)) { - if (_mapper) { + // 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. diff --git a/common/events.h b/common/events.h index 684b87bc5f..e38b1f4ca2 100644 --- a/common/events.h +++ b/common/events.h @@ -146,6 +146,16 @@ public: * @return true if an event was polled, false otherwise. */ virtual bool pollEvent(Event &event) = 0; + + /** + * Checks whether events from this source are allowed to be mapped. + * + * Possible event sources not allowing mapping are: the event recorder/player and/or + * the EventManager, which allows user events to be pushed. + * + * By default we allow mapping for every event source. + */ + virtual bool allowMapping() const { return true; } }; /** |