[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