From 6d1477f214199d8a59b8ab0eea161e16463e35bb Mon Sep 17 00:00:00 2001 From: lat9nq Date: Tue, 14 Jul 2020 13:36:09 -0400 Subject: [PATCH] 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. --- src/core/settings.cpp | 6 ++++++ src/core/settings.h | 3 +++ src/yuzu/configuration/config.cpp | 2 ++ src/yuzu/main.cpp | 4 ---- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/settings.cpp b/src/core/settings.cpp index d3886c4ec7..38f0789a02 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -184,4 +184,10 @@ void RestoreGlobalState() { 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 diff --git a/src/core/settings.h b/src/core/settings.h index 850ca4072c..8788401162 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -539,4 +539,7 @@ void LogSettings(); // Restore the global state of all applicable settings in the Values struct void RestoreGlobalState(); +// Fixes settings that are known to cause issues with the emulator +void Sanitize(); + } // namespace Settings diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 1b2b1b2bb6..e586792bb4 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -1342,11 +1342,13 @@ void Config::WriteSettingGlobal(const QString& name, const QVariant& value, bool void Config::Reload() { ReadValues(); + Settings::Sanitize(); // To apply default value changes SaveValues(); Settings::Apply(); } void Config::Save() { + Settings::Sanitize(); SaveValues(); } diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 8f889be3ae..4323797050 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -1053,10 +1053,6 @@ void GMainWindow::BootGame(const QString& filename) { if (!(loader == nullptr || loader->ReadProgramId(title_id) != Loader::ResultStatus::Success)) { // Load per game settings 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();