Qt: emu_settings: close config files after loading and saving

This commit is contained in:
Megamouse 2018-06-17 09:29:10 +02:00 committed by Ivan
parent dada341d4e
commit 64c04769d2
2 changed files with 16 additions and 9 deletions

View file

@ -195,31 +195,39 @@ void emu_settings::LoadSettings(const std::string& path)
m_currentSettings = YAML::Load(g_cfg_defaults); m_currentSettings = YAML::Load(g_cfg_defaults);
// Add global config // Add global config
m_config = fs::file(fs::get_config_dir() + "/config.yml", fs::read + fs::write + fs::create); fs::file config(fs::get_config_dir() + "/config.yml", fs::read + fs::write + fs::create);
m_currentSettings += YAML::Load(m_config.to_string()); m_currentSettings += YAML::Load(config.to_string());
config.close();
// Add game config // Add game config
if (!path.empty() && fs::is_file(fs::get_config_dir() + path + "/config.yml")) if (!path.empty() && fs::is_file(fs::get_config_dir() + path + "/config.yml"))
{ {
m_config = fs::file(fs::get_config_dir() + path + "/config.yml", fs::read + fs::write); config = fs::file(fs::get_config_dir() + path + "/config.yml", fs::read + fs::write);
m_currentSettings += YAML::Load(m_config.to_string()); m_currentSettings += YAML::Load(config.to_string());
config.close();
} }
} }
void emu_settings::SaveSettings() void emu_settings::SaveSettings()
{ {
fs::file config;
YAML::Emitter out; YAML::Emitter out;
emitData(out, m_currentSettings); emitData(out, m_currentSettings);
if (!m_path.empty()) if (!m_path.empty())
{ {
m_config = fs::file(fs::get_config_dir() + m_path + "/config.yml", fs::read + fs::write + fs::create); config = fs::file(fs::get_config_dir() + m_path + "/config.yml", fs::read + fs::write + fs::create);
}
else
{
config = fs::file(fs::get_config_dir() + "/config.yml", fs::read + fs::write + fs::create);
} }
// Save config // Save config
m_config.seek(0); config.seek(0);
m_config.trunc(0); config.trunc(0);
m_config.write(out.c_str(), out.size()); config.write(out.c_str(), out.size());
config.close();
} }
void emu_settings::EnhanceComboBox(QComboBox* combobox, SettingsType type, bool is_ranged, bool use_max, int max) void emu_settings::EnhanceComboBox(QComboBox* combobox, SettingsType type, bool is_ranged, bool use_max, int max)

View file

@ -285,6 +285,5 @@ private:
YAML::Node m_defaultSettings; // The default settings as a YAML node. YAML::Node m_defaultSettings; // The default settings as a YAML node.
YAML::Node m_currentSettings; // The current settings as a YAML node. YAML::Node m_currentSettings; // The current settings as a YAML node.
fs::file m_config; //! File to read/write the config settings.
std::string m_path; std::string m_path;
}; };