From 51a9bfc9e2881aa7c7ddaa9cc6b2709acab5e725 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Mon, 13 Jul 2009 18:47:32 +0000 Subject: [PATCH] Refactor GUI options update into a function in Common: updateGameGUIOptions. svn-id: r42446 --- common/util.cpp | 9 +++++++++ common/util.h | 7 +++++++ engines/advancedDetector.cpp | 8 +------- engines/scumm/detection.cpp | 8 +------- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/common/util.cpp b/common/util.cpp index e99bbeb12d5..869cec4c48e 100644 --- a/common/util.cpp +++ b/common/util.cpp @@ -24,6 +24,7 @@ #include "common/util.h" #include "common/system.h" +#include "common/config-manager.h" #include "gui/debugger.h" #include "engines/engine.h" @@ -420,6 +421,14 @@ String getGameGUIOptionsDescription(uint32 options) { return res; } +void updateGameGUIOptions(const uint32 options) { + if ((options && !ConfMan.hasKey("guioptions")) || + (ConfMan.hasKey("guioptions") && options != parseGameGUIOptions(ConfMan.get("guioptions")))) { + ConfMan.set("guioptions", getGameGUIOptionsDescription(options)); + ConfMan.flushToDisk(); + } +} + } // End of namespace Common diff --git a/common/util.h b/common/util.h index e50dcebff01..aeadcd1483b 100644 --- a/common/util.h +++ b/common/util.h @@ -284,6 +284,13 @@ bool checkGameGUIOption(GameGUIOption option, const String &str); uint32 parseGameGUIOptions(const String &str); String getGameGUIOptionsDescription(uint32 options); +/** + * Updates the GUI options of the current config manager + * domain, when they differ to the ones passed as + * parameter. + */ +void updateGameGUIOptions(const uint32 options); + } // End of namespace Common diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp index d1395fbe041..7d86f3ef32d 100644 --- a/engines/advancedDetector.cpp +++ b/engines/advancedDetector.cpp @@ -296,13 +296,7 @@ Common::Error AdvancedMetaEngine::createInstance(OSystem *syst, Engine **engine) // If the GUI options were updated, we catch this here and update them in the users config // file transparently. - const uint32 guiOptions = agdDesc->guioptions | params.guioptions; - - if ((guiOptions && !ConfMan.hasKey("guioptions")) || - (ConfMan.hasKey("guioptions") && parseGameGUIOptions(ConfMan.get("guioptions")) != guiOptions)) { - ConfMan.set("guioptions", Common::getGameGUIOptionsDescription(guiOptions)); - ConfMan.flushToDisk(); - } + Common::updateGameGUIOptions(agdDesc->guioptions | params.guioptions); debug(2, "Running %s", toGameDescriptor(*agdDesc, params.list).description().c_str()); if (!createInstance(syst, engine, agdDesc)) diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index e1de8250496..5fa74d22c33 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -884,13 +884,7 @@ Common::Error ScummMetaEngine::createInstance(OSystem *syst, Engine **engine) co // If the GUI options were updated, we catch this here and update them in the users config // file transparently. - const uint32 guiOptions = res.game.guioptions; - - if ((guiOptions && !ConfMan.hasKey("guioptions")) || - (ConfMan.hasKey("guioptions") && parseGameGUIOptions(ConfMan.get("guioptions")) != guiOptions)) { - ConfMan.set("guioptions", Common::getGameGUIOptionsDescription(guiOptions)); - ConfMan.flushToDisk(); - } + Common::updateGameGUIOptions(res.game.guioptions); // Finally, we have massaged the GameDescriptor to our satisfaction, and can // instantiate the appropriate game engine. Hooray!