[Scummvm-cvs-logs] scummvm master -> 40b68b41c7a507dad5a1d38813bfa7f89e7c6551

tsoliman tarek at bashasoliman.com
Fri Dec 30 19:37:45 CET 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
40b68b41c7 KEYMAPPER: Make engine keymap init and cleanup more generic


Commit: 40b68b41c7a507dad5a1d38813bfa7f89e7c6551
    https://github.com/scummvm/scummvm/commit/40b68b41c7a507dad5a1d38813bfa7f89e7c6551
Author: Tarek Soliman (tsoliman at scummvm.org)
Date: 2011-12-30T10:36:11-08:00

Commit Message:
KEYMAPPER: Make engine keymap init and cleanup more generic

Changed paths:
    base/main.cpp
    engines/engine.cpp
    engines/engine.h
    engines/kyra/lol.cpp



diff --git a/base/main.cpp b/base/main.cpp
index 61a0515..b4cfd45 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -203,6 +203,9 @@ static Common::Error runGame(const EnginePlugin *plugin, OSystem &system, const
 			warning(_("Engine does not support debug level '%s'"), token.c_str());
 	}
 
+	// Initialize any game-specific keymaps
+	engine->initKeymap();
+
 	// Inform backend that the engine is about to be run
 	system.engineInit();
 
@@ -212,6 +215,9 @@ static Common::Error runGame(const EnginePlugin *plugin, OSystem &system, const
 	// Inform backend that the engine finished
 	system.engineDone();
 
+	// Clean up any game-specific keymaps
+	engine->deinitKeymap();
+
 	// Free up memory
 	delete engine;
 
diff --git a/engines/engine.cpp b/engines/engine.cpp
index e4e4630..4811ba6 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -45,6 +45,8 @@
 #include "common/textconsole.h"
 #include "common/translation.h"
 
+#include "backends/keymapper/keymapper.h"
+
 #include "gui/debugger.h"
 #include "gui/dialog.h"
 #include "gui/message.h"
@@ -499,6 +501,12 @@ void Engine::syncSoundSettings() {
 	_mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, soundVolumeSpeech);
 }
 
+void Engine::deinitKeymap() {
+#ifdef ENABLE_KEYMAPPER
+	_eventMan->getKeymapper()->cleanupGameKeymaps();
+#endif
+}
+
 void Engine::flipMute() {
 	// Mute will be set to true by default here. This has two reasons:
 	// - if the game already has an "mute" config entry, it will be overwritten anyway.
diff --git a/engines/engine.h b/engines/engine.h
index d508b4e..a020dc4 100644
--- a/engines/engine.h
+++ b/engines/engine.h
@@ -181,10 +181,15 @@ public:
 	virtual void syncSoundSettings();
 
 	/*
-	 * Initialize the engine-specific keymap
+	 * Initialize any engine-specific keymaps.
 	 */
 	virtual void initKeymap() {}
 
+	/*
+	 * Cleanup any engine-specific keymaps.
+	 */
+	virtual void deinitKeymap();
+
 	/**
 	 * Flip mute all sound option.
 	 */
diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp
index 62143e5..db71b80 100644
--- a/engines/kyra/lol.cpp
+++ b/engines/kyra/lol.cpp
@@ -212,10 +212,6 @@ LoLEngine::~LoLEngine() {
 	setupPrologueData(false);
 	releaseTempData();
 
-#ifdef ENABLE_KEYMAPPER
-	_eventMan->getKeymapper()->cleanupGameKeymaps();
-#endif
-
 	delete[] _landsFile;
 	delete[] _levelLangFile;
 
@@ -461,7 +457,9 @@ Common::Error LoLEngine::init() {
 	_spellProcs.push_back(new SpellProc(this, 0));
 	_spellProcs.push_back(new SpellProc(this, &LoLEngine::castGuardian));
 
-	initKeymap();
+#ifdef ENABLE_KEYMAPPER
+	_eventMan->getKeymapper()->pushKeymap(kKeymapName, true);
+#endif
 
 	return Common::kNoError;
 }
@@ -503,8 +501,6 @@ void LoLEngine::initKeymap() {
 
 	mapper->addGameKeymap(engineKeyMap);
 
-	mapper->pushKeymap(kKeymapName, true);
-
 #endif
 }
 






More information about the Scummvm-git-logs mailing list