aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/advancedDetector.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp
index c127faec28..d1395fbe04 100644
--- a/engines/advancedDetector.cpp
+++ b/engines/advancedDetector.cpp
@@ -291,15 +291,24 @@ Common::Error AdvancedMetaEngine::createInstance(OSystem *syst, Engine **engine)
}
}
- if (agdDesc == 0) {
+ if (agdDesc == 0)
return Common::kNoGameDataFoundError;
+
+ // 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();
}
debug(2, "Running %s", toGameDescriptor(*agdDesc, params.list).description().c_str());
- if (!createInstance(syst, engine, agdDesc)) {
+ if (!createInstance(syst, engine, agdDesc))
return Common::kNoGameDataFoundError;
- }
- return Common::kNoError;
+ else
+ return Common::kNoError;
}
struct SizeMD5 {