settings: Move settings sanitization to its own function

Creates a new function that can be expanded later to fix other settings that are known to cause emulation errors across executables.
This commit is contained in:
lat9nq 2020-07-14 13:36:09 -04:00
parent 8160e142e1
commit 6d1477f214
4 changed files with 11 additions and 4 deletions

View file

@ -184,4 +184,10 @@ void RestoreGlobalState() {
values.sound_index.SetGlobal(true); values.sound_index.SetGlobal(true);
} }
void Sanitize() {
values.use_asynchronous_gpu_emulation.SetValue(
values.use_asynchronous_gpu_emulation.GetValue() ||
values.use_multi_core.GetValue());
}
} // namespace Settings } // namespace Settings

View file

@ -539,4 +539,7 @@ void LogSettings();
// Restore the global state of all applicable settings in the Values struct // Restore the global state of all applicable settings in the Values struct
void RestoreGlobalState(); void RestoreGlobalState();
// Fixes settings that are known to cause issues with the emulator
void Sanitize();
} // namespace Settings } // namespace Settings

View file

@ -1342,11 +1342,13 @@ void Config::WriteSettingGlobal(const QString& name, const QVariant& value, bool
void Config::Reload() { void Config::Reload() {
ReadValues(); ReadValues();
Settings::Sanitize();
// To apply default value changes // To apply default value changes
SaveValues(); SaveValues();
Settings::Apply(); Settings::Apply();
} }
void Config::Save() { void Config::Save() {
Settings::Sanitize();
SaveValues(); SaveValues();
} }

View file

@ -1053,10 +1053,6 @@ void GMainWindow::BootGame(const QString& filename) {
if (!(loader == nullptr || loader->ReadProgramId(title_id) != Loader::ResultStatus::Success)) { if (!(loader == nullptr || loader->ReadProgramId(title_id) != Loader::ResultStatus::Success)) {
// Load per game settings // Load per game settings
Config per_game_config(fmt::format("{:016X}.ini", title_id), false); Config per_game_config(fmt::format("{:016X}.ini", title_id), false);
Settings::values.use_asynchronous_gpu_emulation.SetValue(
Settings::values.use_asynchronous_gpu_emulation.GetValue() ||
Settings::values.use_multi_core.GetValue());
} }
Settings::LogSettings(); Settings::LogSettings();