Przeglądaj źródła

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.
lat9nq 6 lat temu
rodzic
commit
6d1477f214

+ 6 - 0
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

+ 3 - 0
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

+ 2 - 0
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();
 }

+ 0 - 4
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();