[Scummvm-cvs-logs] SF.net SVN: scummvm:[42727] scummvm/trunk/backends
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Sat Jul 25 03:01:05 CEST 2009
Revision: 42727
http://scummvm.svn.sourceforge.net/scummvm/?rev=42727&view=rev
Author: lordhoto
Date: 2009-07-25 01:01:05 +0000 (Sat, 25 Jul 2009)
Log Message:
-----------
- Adapt DefaultEventManager to use Common::ArtificialEventSource
- Adapt Keymapper to implement EventMapper interface
Modified Paths:
--------------
scummvm/trunk/backends/events/default/default-events.cpp
scummvm/trunk/backends/events/default/default-events.h
scummvm/trunk/backends/keymapper/keymapper.cpp
scummvm/trunk/backends/keymapper/keymapper.h
Modified: scummvm/trunk/backends/events/default/default-events.cpp
===================================================================
--- scummvm/trunk/backends/events/default/default-events.cpp 2009-07-25 01:00:47 UTC (rev 42726)
+++ scummvm/trunk/backends/events/default/default-events.cpp 2009-07-25 01:01:05 UTC (rev 42727)
@@ -206,14 +206,13 @@
#endif
#ifdef ENABLE_KEYMAPPER
_keymapper = new Common::Keymapper(this);
+ // EventDispatcher will automatically free the keymapper
+ g_eventDispatcher.registerMapper(_keymapper);
_remap = false;
#endif
}
DefaultEventManager::~DefaultEventManager() {
-#ifdef ENABLE_KEYMAPPER
- delete _keymapper;
-#endif
#ifdef ENABLE_VKEYBD
delete _vk;
#endif
@@ -388,21 +387,6 @@
if (!_eventQueue.empty()) {
event = _eventQueue.pop();
result = true;
-
-#ifdef ENABLE_KEYMAPPER
- if (result) {
- // send key press events to keymapper
- if (event.type == Common::EVENT_KEYDOWN) {
- if (_keymapper->mapKeyDown(event.kbd)) {
- result = false;
- }
- } else if (event.type == Common::EVENT_KEYUP) {
- if (_keymapper->mapKeyUp(event.kbd)) {
- result = false;
- }
- }
- }
-#endif
}
if (_recordMode != kPassthrough) {
Modified: scummvm/trunk/backends/events/default/default-events.h
===================================================================
--- scummvm/trunk/backends/events/default/default-events.h 2009-07-25 01:00:47 UTC (rev 42726)
+++ scummvm/trunk/backends/events/default/default-events.h 2009-07-25 01:01:05 UTC (rev 42727)
@@ -51,27 +51,8 @@
bool _remap;
#endif
- // TODO: Maybe move this to common/events.h, when other code uses something similar
- class ArtificialEventSource : public Common::EventSource {
- private:
- Common::Queue<Common::Event> _artificialEventQueue;
- public:
- void addEvent(const Common::Event &ev) {
- _artificialEventQueue.push(ev);
- }
+ Common::ArtificialEventSource _artificialEventSource;
- bool pollEvent(Common::Event &ev) {
- if (!_artificialEventQueue.empty()) {
- ev = _artificialEventQueue.pop();
- return true;
- } else {
- return false;
- }
- }
-
- bool allowMapping() const { return false; }
- } _artificialEventSource;
-
Common::Queue<Common::Event> _eventQueue;
bool notifyEvent(const Common::Event &ev) {
_eventQueue.push(ev);
Modified: scummvm/trunk/backends/keymapper/keymapper.cpp
===================================================================
--- scummvm/trunk/backends/keymapper/keymapper.cpp 2009-07-25 01:00:47 UTC (rev 42726)
+++ scummvm/trunk/backends/keymapper/keymapper.cpp 2009-07-25 01:01:05 UTC (rev 42727)
@@ -168,6 +168,15 @@
_activeMaps.pop();
}
+bool Keymapper::notifyEvent(const Common::Event &ev) {
+ if (ev.type == Common::EVENT_KEYDOWN)
+ return mapKeyDown(ev.kbd);
+ else if (ev.type == Common::EVENT_KEYUP)
+ return mapKeyUp(ev.kbd);
+ else
+ return false;
+}
+
bool Keymapper::mapKeyDown(const KeyState& key) {
return mapKey(key, true);
}
@@ -255,7 +264,7 @@
}
evt.mouse = _eventMan->getMousePos();
- _eventMan->pushEvent(evt);
+ addEvent(evt);
}
}
Modified: scummvm/trunk/backends/keymapper/keymapper.h
===================================================================
--- scummvm/trunk/backends/keymapper/keymapper.h 2009-07-25 01:00:47 UTC (rev 42726)
+++ scummvm/trunk/backends/keymapper/keymapper.h 2009-07-25 01:01:05 UTC (rev 42727)
@@ -39,7 +39,7 @@
namespace Common {
-class Keymapper {
+class Keymapper : public Common::EventMapper, private Common::ArtificialEventSource {
public:
struct MapRecord {
@@ -134,6 +134,10 @@
*/
void popKeymap();
+ // Implementation of the EventMapper interface
+ bool notifyEvent(const Common::Event &ev);
+ bool pollEvent(Common::Event &ev) { return Common::ArtificialEventSource::pollEvent(ev); }
+
/**
* @brief Map a key press event.
* If the active keymap contains a Action mapped to the given key, then
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list