diff options
Diffstat (limited to 'common/config-manager.cpp')
-rw-r--r-- | common/config-manager.cpp | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/common/config-manager.cpp b/common/config-manager.cpp index 554a99ea95..0141b22483 100644 --- a/common/config-manager.cpp +++ b/common/config-manager.cpp @@ -29,7 +29,7 @@ #include "common/util.h" #include "common/system.h" -DECLARE_SINGLETON(Common::ConfigManager) +DECLARE_SINGLETON(Common::ConfigManager); static bool isValidDomainName(const Common::String &domName) { const char *p = domName.c_str(); @@ -53,6 +53,27 @@ const char *ConfigManager::kKeymapperDomain = "keymapper"; ConfigManager::ConfigManager() : _activeDomain(0) { } +void ConfigManager::defragment() { + ConfigManager *newInstance = new ConfigManager(); + newInstance->copyFrom(*_singleton); + delete _singleton; + _singleton = newInstance; +} + +void ConfigManager::copyFrom(ConfigManager &source) { + _transientDomain = source._transientDomain; + _gameDomains = source._gameDomains; + _appDomain = source._appDomain; + _defaultsDomain = source._defaultsDomain; +#ifdef ENABLE_KEYMAPPER + _keymapperDomain = source._keymapperDomain; +#endif + _domainSaveOrder = source._domainSaveOrder; + _activeDomainName = source._activeDomainName; + _activeDomain = &_gameDomains[_activeDomainName]; + _filename = source._filename; +} + void ConfigManager::loadDefaultConfigFile() { // Open the default config file @@ -69,7 +90,7 @@ void ConfigManager::loadDefaultConfigFile() { } else { // No config file -> create new one! - printf("Default configuration file missing, creating a new one\n"); + debug("Default configuration file missing, creating a new one"); flushToDisk(); } @@ -81,9 +102,9 @@ void ConfigManager::loadConfigFile(const String &filename) { FSNode node(filename); File cfg_file; if (!cfg_file.open(node)) { - printf("Creating configuration file: %s\n", filename.c_str()); + debug("Creating configuration file: %s\n", filename.c_str()); } else { - printf("Using configuration file: %s\n", _filename.c_str()); + debug("Using configuration file: %s\n", _filename.c_str()); loadFromStream(cfg_file); } } @@ -508,9 +529,7 @@ void ConfigManager::set(const String &key, const String &value, const String &do } void ConfigManager::setInt(const String &key, int value, const String &domName) { - char tmp[128]; - snprintf(tmp, sizeof(tmp), "%i", value); - set(key, String(tmp), domName); + set(key, String::format("%i", value), domName); } void ConfigManager::setBool(const String &key, bool value, const String &domName) { @@ -530,9 +549,7 @@ void ConfigManager::registerDefault(const String &key, const char *value) { } void ConfigManager::registerDefault(const String &key, int value) { - char tmp[128]; - snprintf(tmp, sizeof(tmp), "%i", value); - registerDefault(key, tmp); + registerDefault(key, String::format("%i", value)); } void ConfigManager::registerDefault(const String &key, bool value) { @@ -600,7 +617,6 @@ bool ConfigManager::hasGameDomain(const String &domName) const { #pragma mark - - void ConfigManager::Domain::setDomainComment(const String &comment) { _domainComment = comment; } |