From d6331c1e71ac28317bf1a7af36cfad2f2af05ca3 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Fri, 31 Dec 2021 03:00:39 +0100 Subject: [PATCH] Config: Port remaining Interface settings to new config system. --- Source/Core/Core/Config/MainSettings.cpp | 14 ++++++ Source/Core/Core/Config/MainSettings.h | 18 ++++++++ .../Core/ConfigLoaders/IsSettingSaveable.cpp | 9 +--- Source/Core/Core/ConfigManager.cpp | 35 --------------- Source/Core/Core/ConfigManager.h | 24 ----------- Source/Core/Core/Core.cpp | 4 +- Source/Core/Core/HLE/HLE.cpp | 2 +- Source/Core/Core/HW/VideoInterface.cpp | 2 +- .../CachedInterpreter/CachedInterpreter.cpp | 4 +- .../Core/PowerPC/Interpreter/Interpreter.cpp | 4 +- Source/Core/Core/PowerPC/Jit64/Jit.cpp | 15 +++---- Source/Core/Core/PowerPC/Jit64/JitAsm.cpp | 11 ++--- .../Core/PowerPC/Jit64Common/BlockCache.cpp | 5 +-- Source/Core/Core/PowerPC/JitArm64/Jit.cpp | 8 ++-- .../Core/Core/PowerPC/JitCommon/JitBase.cpp | 5 ++- Source/Core/Core/PowerPC/JitCommon/JitBase.h | 3 ++ Source/Core/Core/PowerPC/PPCAnalyst.cpp | 10 +++-- Source/Core/Core/PowerPC/PPCAnalyst.h | 4 ++ Source/Core/Core/PowerPC/PowerPC.cpp | 3 +- Source/Core/Core/TitleDatabase.cpp | 4 +- Source/Core/DolphinNoGUI/PlatformX11.cpp | 13 +++--- Source/Core/DolphinQt/Debugger/JITWidget.cpp | 1 + Source/Core/DolphinQt/HotkeyScheduler.cpp | 2 +- Source/Core/DolphinQt/MainWindow.cpp | 2 +- Source/Core/DolphinQt/RenderWidget.cpp | 17 ++++---- Source/Core/DolphinQt/Resources.cpp | 4 +- Source/Core/DolphinQt/Settings.cpp | 19 ++++---- Source/Core/DolphinQt/Settings.h | 6 +-- .../Core/DolphinQt/Settings/InterfacePane.cpp | 43 +++++++++---------- Source/Core/DolphinQt/Translation.cpp | 6 +-- 30 files changed, 135 insertions(+), 162 deletions(-) diff --git a/Source/Core/Core/Config/MainSettings.cpp b/Source/Core/Core/Config/MainSettings.cpp index 5bf163b834..6f89123bf0 100644 --- a/Source/Core/Core/Config/MainSettings.cpp +++ b/Source/Core/Core/Config/MainSettings.cpp @@ -8,6 +8,7 @@ #include #include "AudioCommon/AudioCommon.h" +#include "Common/CommonPaths.h" #include "Common/Config/Config.h" #include "Common/StringUtil.h" #include "Common/Version.h" @@ -198,6 +199,19 @@ const Info MAIN_USE_PANIC_HANDLERS{{System::Main, "Interface", "UsePanicHa const Info MAIN_ABORT_ON_PANIC_ALERT{{System::Main, "Interface", "AbortOnPanicAlert"}, false}; const Info MAIN_OSD_MESSAGES{{System::Main, "Interface", "OnScreenDisplayMessages"}, true}; const Info MAIN_SKIP_NKIT_WARNING{{System::Main, "Interface", "SkipNKitWarning"}, false}; +const Info MAIN_CONFIRM_ON_STOP{{System::Main, "Interface", "ConfirmStop"}, true}; +const Info MAIN_SHOW_CURSOR{{System::Main, "Interface", "CursorVisibility"}, + ShowCursor::OnMovement}; +const Info MAIN_LOCK_CURSOR{{System::Main, "Interface", "LockCursor"}, false}; +const Info MAIN_INTERFACE_LANGUAGE{{System::Main, "Interface", "LanguageCode"}, ""}; +const Info MAIN_EXTENDED_FPS_INFO{{System::Main, "Interface", "ExtendedFPSInfo"}, false}; +const Info MAIN_SHOW_ACTIVE_TITLE{{System::Main, "Interface", "ShowActiveTitle"}, true}; +const Info MAIN_USE_BUILT_IN_TITLE_DATABASE{ + {System::Main, "Interface", "UseBuiltinTitleDatabase"}, true}; +const Info MAIN_THEME_NAME{{System::Main, "Interface", "ThemeName"}, + DEFAULT_THEME_DIR}; +const Info MAIN_PAUSE_ON_FOCUS_LOST{{System::Main, "Interface", "PauseOnFocusLost"}, false}; +const Info MAIN_ENABLE_DEBUGGING{{System::Main, "Interface", "DebugModeEnabled"}, false}; // Main.Analytics diff --git a/Source/Core/Core/Config/MainSettings.h b/Source/Core/Core/Config/MainSettings.h index 8b88399cc6..7b34c311f1 100644 --- a/Source/Core/Core/Config/MainSettings.h +++ b/Source/Core/Core/Config/MainSettings.h @@ -167,6 +167,24 @@ extern const Info MAIN_USE_PANIC_HANDLERS; extern const Info MAIN_ABORT_ON_PANIC_ALERT; extern const Info MAIN_OSD_MESSAGES; extern const Info MAIN_SKIP_NKIT_WARNING; +extern const Info MAIN_CONFIRM_ON_STOP; + +enum class ShowCursor +{ + Never, + Constantly, + OnMovement, +}; +extern const Info MAIN_SHOW_CURSOR; + +extern const Info MAIN_LOCK_CURSOR; +extern const Info MAIN_INTERFACE_LANGUAGE; +extern const Info MAIN_EXTENDED_FPS_INFO; +extern const Info MAIN_SHOW_ACTIVE_TITLE; +extern const Info MAIN_USE_BUILT_IN_TITLE_DATABASE; +extern const Info MAIN_THEME_NAME; +extern const Info MAIN_PAUSE_ON_FOCUS_LOST; +extern const Info MAIN_ENABLE_DEBUGGING; // Main.Analytics diff --git a/Source/Core/Core/ConfigLoaders/IsSettingSaveable.cpp b/Source/Core/Core/ConfigLoaders/IsSettingSaveable.cpp index 0dc22b9b91..755de46418 100644 --- a/Source/Core/Core/ConfigLoaders/IsSettingSaveable.cpp +++ b/Source/Core/Core/ConfigLoaders/IsSettingSaveable.cpp @@ -28,7 +28,7 @@ bool IsSettingSaveable(const Config::Location& config_location) for (const std::string_view section : {"NetPlay", "General", "GBA", "Display", "Network", "Analytics", "AndroidOverlayButtons", "DSP", "GameList", "FifoPlayer", "AutoUpdate", "Movie", "Input", "Debug", - "BluetoothPassthrough", "USBPassthrough"}) + "BluetoothPassthrough", "USBPassthrough", "Interface"}) { if (config_location.section == section) return true; @@ -73,13 +73,6 @@ bool IsSettingSaveable(const Config::Location& config_location) &Config::MAIN_REAL_WII_REMOTE_REPEAT_REPORTS.GetLocation(), &Config::MAIN_DSP_HLE.GetLocation(), - // Main.Interface - - &Config::MAIN_USE_PANIC_HANDLERS.GetLocation(), - &Config::MAIN_ABORT_ON_PANIC_ALERT.GetLocation(), - &Config::MAIN_OSD_MESSAGES.GetLocation(), - &Config::MAIN_SKIP_NKIT_WARNING.GetLocation(), - // UI.General &Config::MAIN_USE_DISCORD_PRESENCE.GetLocation(), diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 0e2ce2ad3c..a3f28a10ed 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -89,7 +89,6 @@ void SConfig::SaveSettings() ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX)); // load first to not kill unknown stuff SaveGeneralSettings(ini); - SaveInterfaceSettings(ini); SaveCoreSettings(ini); ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX)); @@ -129,22 +128,6 @@ void SConfig::SaveGeneralSettings(IniFile& ini) general->Set("GDBPort", iGDBPort); } -void SConfig::SaveInterfaceSettings(IniFile& ini) -{ - IniFile::Section* interface = ini.GetOrCreateSection("Interface"); - - interface->Set("ConfirmStop", bConfirmStop); - interface->Set("CursorVisibility", m_show_cursor); - interface->Set("LockCursor", bLockCursor); - interface->Set("LanguageCode", m_InterfaceLanguage); - interface->Set("ExtendedFPSInfo", m_InterfaceExtendedFPSInfo); - interface->Set("ShowActiveTitle", m_show_active_title); - interface->Set("UseBuiltinTitleDatabase", m_use_builtin_title_database); - interface->Set("ThemeName", theme_name); - interface->Set("PauseOnFocusLost", m_PauseOnFocusLost); - interface->Set("DebugModeEnabled", bEnableDebugging); -} - void SConfig::SaveCoreSettings(IniFile& ini) { IniFile::Section* core = ini.GetOrCreateSection("Core"); @@ -203,7 +186,6 @@ void SConfig::LoadSettings() ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX)); LoadGeneralSettings(ini); - LoadInterfaceSettings(ini); LoadCoreSettings(ini); } @@ -234,22 +216,6 @@ void SConfig::LoadGeneralSettings(IniFile& ini) general->Get("WirelessMac", &m_WirelessMac); } -void SConfig::LoadInterfaceSettings(IniFile& ini) -{ - IniFile::Section* interface = ini.GetOrCreateSection("Interface"); - - interface->Get("ConfirmStop", &bConfirmStop, true); - interface->Get("CursorVisibility", &m_show_cursor, ShowCursor::OnMovement); - interface->Get("LockCursor", &bLockCursor, false); - interface->Get("LanguageCode", &m_InterfaceLanguage, ""); - interface->Get("ExtendedFPSInfo", &m_InterfaceExtendedFPSInfo, false); - interface->Get("ShowActiveTitle", &m_show_active_title, true); - interface->Get("UseBuiltinTitleDatabase", &m_use_builtin_title_database, true); - interface->Get("ThemeName", &theme_name, DEFAULT_THEME_DIR); - interface->Get("PauseOnFocusLost", &m_PauseOnFocusLost, false); - interface->Get("DebugModeEnabled", &bEnableDebugging, false); -} - void SConfig::LoadCoreSettings(IniFile& ini) { IniFile::Section* core = ini.GetOrCreateSection("Core"); @@ -423,7 +389,6 @@ void SConfig::OnNewTitleLoad() void SConfig::LoadDefaults() { - bEnableDebugging = false; bAutomaticStart = false; bBootToPause = false; diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index 843aa5e103..09dd8773c1 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -69,7 +69,6 @@ struct SConfig std::vector m_ISOFolder; // Settings - bool bEnableDebugging = false; int iGDBPort; #ifndef _WIN32 std::string gdb_socket; @@ -115,19 +114,6 @@ struct SConfig bool bWii = false; bool m_is_mios = false; - // Interface settings - bool bConfirmStop = false; - - enum class ShowCursor - { - Never, - Constantly, - OnMovement, - } m_show_cursor; - - bool bLockCursor = false; - std::string theme_name; - // Custom RTC bool bEnableCustomRTC; u32 m_customRTCValue; @@ -192,20 +178,12 @@ struct SConfig std::string m_bba_xlink_ip; bool m_bba_xlink_chat_osd = true; - // interface language - std::string m_InterfaceLanguage; float m_EmulationSpeed; - // other interface settings - bool m_InterfaceExtendedFPSInfo; - bool m_show_active_title = false; - bool m_use_builtin_title_database = true; std::string m_WirelessMac; bool m_ShowLag; bool m_ShowFrameCount; - bool m_PauseOnFocusLost; - // Input settings bool m_AdapterRumble[4]; bool m_AdapterKonga[4]; @@ -231,11 +209,9 @@ private: ~SConfig(); void SaveGeneralSettings(IniFile& ini); - void SaveInterfaceSettings(IniFile& ini); void SaveCoreSettings(IniFile& ini); void LoadGeneralSettings(IniFile& ini); - void LoadInterfaceSettings(IniFile& ini); void LoadCoreSettings(IniFile& ini); void SetRunningGameMetadata(const std::string& game_id, const std::string& gametdb_id, diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index 99cd305082..2180d3f2cd 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -954,7 +954,7 @@ void UpdateTitle(u32 ElapseTime) else { SFPS = fmt::format("FPS: {:.0f} - VPS: {:.0f} - {:.0f}%", FPS, VPS, Speed); - if (SConfig::GetInstance().m_InterfaceExtendedFPSInfo) + if (Config::Get(Config::MAIN_EXTENDED_FPS_INFO)) { // Use extended or summary information. The summary information does not print the ticks data, // that's more of a debugging interest, it can always be optional of course if someone is @@ -980,7 +980,7 @@ void UpdateTitle(u32 ElapseTime) } std::string message = fmt::format("{} | {} | {}", Common::scm_rev_str, SSettings, SFPS); - if (SConfig::GetInstance().m_show_active_title) + if (Config::Get(Config::MAIN_SHOW_ACTIVE_TITLE)) { const std::string& title = SConfig::GetInstance().GetTitleDescription(); if (!title.empty()) diff --git a/Source/Core/Core/HLE/HLE.cpp b/Source/Core/Core/HLE/HLE.cpp index 7660d0bef7..264a3013d7 100644 --- a/Source/Core/Core/HLE/HLE.cpp +++ b/Source/Core/Core/HLE/HLE.cpp @@ -189,7 +189,7 @@ HookFlag GetHookFlagsByIndex(u32 index) bool IsEnabled(HookFlag flag) { - return flag != HLE::HookFlag::Debug || SConfig::GetInstance().bEnableDebugging || + return flag != HLE::HookFlag::Debug || Config::Get(Config::MAIN_ENABLE_DEBUGGING) || PowerPC::GetMode() == PowerPC::CoreMode::Interpreter; } diff --git a/Source/Core/Core/HW/VideoInterface.cpp b/Source/Core/Core/HW/VideoInterface.cpp index 075484b315..7cc4fc40a7 100644 --- a/Source/Core/Core/HW/VideoInterface.cpp +++ b/Source/Core/Core/HW/VideoInterface.cpp @@ -882,7 +882,7 @@ void Update(u64 ticks) if (s_half_line_of_next_si_poll == s_half_line_count) { Core::UpdateInputGate(!Config::Get(Config::MAIN_INPUT_BACKGROUND_INPUT), - SConfig::GetInstance().bLockCursor); + Config::Get(Config::MAIN_LOCK_CURSOR)); SerialInterface::UpdateDevices(); s_half_line_of_next_si_poll += 2 * SerialInterface::GetPollXLines(); } diff --git a/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp b/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp index e75994fc96..54b2c7556b 100644 --- a/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp +++ b/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp @@ -273,8 +273,8 @@ void CachedInterpreter::Jit(u32 address) if (!op.skip) { - const bool breakpoint = SConfig::GetInstance().bEnableDebugging && - PowerPC::breakpoints.IsAddressBreakPoint(op.address); + const bool breakpoint = + m_enable_debugging && PowerPC::breakpoints.IsAddressBreakPoint(op.address); const bool check_fpu = (op.opinfo->flags & FL_USE_FPU) && !js.firstFPInstructionFound; const bool endblock = (op.opinfo->flags & FL_ENDBLOCK) != 0; const bool memcheck = (op.opinfo->flags & FL_LOADSTORE) && jo.memcheck; diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp index d984360684..b2e2c73fb8 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp @@ -14,7 +14,7 @@ #include "Common/GekkoDisassembler.h" #include "Common/Logging/Log.h" #include "Common/StringUtil.h" -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "Core/CoreTiming.h" #include "Core/Debugger/Debugger_SymbolMap.h" #include "Core/HLE/HLE.h" @@ -247,7 +247,7 @@ void Interpreter::Run() CoreTiming::Advance(); // we have to check exceptions at branches apparently (or maybe just rfi?) - if (SConfig::GetInstance().bEnableDebugging) + if (Config::Get(Config::MAIN_ENABLE_DEBUGGING)) { #ifdef SHOW_HISTORY s_pc_block_vec.push_back(PC); diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/PowerPC/Jit64/Jit.cpp index 54798473d7..84e2970d27 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit.cpp @@ -355,8 +355,8 @@ void Jit64::Init() // BLR optimization has the same consequences as block linking, as well as // depending on the fault handler to be safe in the event of excessive BL. - m_enable_blr_optimization = jo.enableBlocklink && SConfig::GetInstance().bFastmem && - !SConfig::GetInstance().bEnableDebugging; + m_enable_blr_optimization = + jo.enableBlocklink && SConfig::GetInstance().bFastmem && !m_enable_debugging; m_cleanup_after_stackfault = false; m_stack = nullptr; @@ -603,8 +603,8 @@ void Jit64::JustWriteExit(u32 destination, bool bl, u32 after) MOV(32, PPCSTATE(pc), Imm32(destination)); // Do not skip breakpoint check if debugging. - const u8* dispatcher = SConfig::GetInstance().bEnableDebugging ? asm_routines.dispatcher : - asm_routines.dispatcher_no_check; + const u8* dispatcher = + m_enable_debugging ? asm_routines.dispatcher : asm_routines.dispatcher_no_check; // Perform downcount flag check, followed by the requested exit if (bl) @@ -796,7 +796,7 @@ void Jit64::Jit(u32 em_address, bool clear_cache_and_retry_on_failure) std::size_t block_size = m_code_buffer.size(); - if (SConfig::GetInstance().bEnableDebugging) + if (m_enable_debugging) { // We can link blocks as long as we are not single stepping and there are no breakpoints here EnableBlockLink(); @@ -1007,7 +1007,7 @@ bool Jit64::DoJit(u32 em_address, JitBlock* b, u32 nextPC) js.fastmemLoadStore = nullptr; js.fixupExceptionHandler = false; - if (!SConfig::GetInstance().bEnableDebugging) + if (!m_enable_debugging) js.downcountAmount += PatchEngine::GetSpeedhackCycles(js.compilerPC); if (i == (code_block.m_num_instructions - 1)) @@ -1094,8 +1094,7 @@ bool Jit64::DoJit(u32 em_address, JitBlock* b, u32 nextPC) js.firstFPInstructionFound = true; } - if (SConfig::GetInstance().bEnableDebugging && breakpoints.IsAddressBreakPoint(op.address) && - !CPU::IsStepping()) + if (m_enable_debugging && breakpoints.IsAddressBreakPoint(op.address) && !CPU::IsStepping()) { // Turn off block linking if there are breakpoints so that the Step Over command does not // link this block. diff --git a/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp b/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp index 3f7b1a09de..b1dd505c34 100644 --- a/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp +++ b/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp @@ -9,7 +9,7 @@ #include "Common/JitRegister.h" #include "Common/x64ABI.h" #include "Common/x64Emitter.h" -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "Core/CoreTiming.h" #include "Core/HW/CPU.h" #include "Core/HW/Memmap.h" @@ -37,6 +37,8 @@ void Jit64AsmRoutineManager::Init(u8* stack_top) void Jit64AsmRoutineManager::Generate() { + const bool enable_debugging = Config::Get(Config::MAIN_ENABLE_DEBUGGING); + enter_code = AlignCode16(); // We need to own the beginning of RSP, so we do an extra stack adjustment // for the shadow region before calls in this function. This call will @@ -65,8 +67,7 @@ void Jit64AsmRoutineManager::Generate() ABI_PushRegistersAndAdjustStack({}, 0); ABI_CallFunction(CoreTiming::Advance); ABI_PopRegistersAndAdjustStack({}, 0); - FixupBranch skipToRealDispatch = - J(SConfig::GetInstance().bEnableDebugging); // skip the sync and compare first time + FixupBranch skipToRealDispatch = J(enable_debugging); // skip the sync and compare first time dispatcher_mispredicted_blr = GetCodePtr(); AND(32, PPCSTATE(pc), Imm32(0xFFFFFFFC)); @@ -88,7 +89,7 @@ void Jit64AsmRoutineManager::Generate() FixupBranch dbg_exit; - if (SConfig::GetInstance().bEnableDebugging) + if (enable_debugging) { MOV(64, R(RSCRATCH), ImmPtr(CPU::GetStatePtr())); TEST(32, MatR(RSCRATCH), Imm32(static_cast(CPU::State::Stepping))); @@ -205,7 +206,7 @@ void Jit64AsmRoutineManager::Generate() J_CC(CC_Z, outerLoop); // Landing pad for drec space - if (SConfig::GetInstance().bEnableDebugging) + if (enable_debugging) SetJumpTarget(dbg_exit); ResetStack(*this); if (m_stack_top) diff --git a/Source/Core/Core/PowerPC/Jit64Common/BlockCache.cpp b/Source/Core/Core/PowerPC/Jit64Common/BlockCache.cpp index 9b03f0d20f..a905842b55 100644 --- a/Source/Core/Core/PowerPC/Jit64Common/BlockCache.cpp +++ b/Source/Core/Core/PowerPC/Jit64Common/BlockCache.cpp @@ -14,9 +14,8 @@ JitBlockCache::JitBlockCache(JitBase& jit) : JitBaseBlockCache{jit} void JitBlockCache::WriteLinkBlock(const JitBlock::LinkData& source, const JitBlock* dest) { // Do not skip breakpoint check if debugging. - const u8* dispatcher = SConfig::GetInstance().bEnableDebugging ? - m_jit.GetAsmRoutines()->dispatcher : - m_jit.GetAsmRoutines()->dispatcher_no_check; + const u8* dispatcher = m_jit.IsDebuggingEnabled() ? m_jit.GetAsmRoutines()->dispatcher : + m_jit.GetAsmRoutines()->dispatcher_no_check; u8* location = source.exitPtrs; const u8* address = dest ? dest->checkedEntry : dispatcher; diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp index eb31e1a874..da44109464 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp @@ -67,8 +67,8 @@ void JitArm64::Init() analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_CARRY_MERGE); analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_BRANCH_FOLLOW); - m_enable_blr_optimization = jo.enableBlocklink && SConfig::GetInstance().bFastmem && - !SConfig::GetInstance().bEnableDebugging; + m_enable_blr_optimization = + jo.enableBlocklink && SConfig::GetInstance().bFastmem && !m_enable_debugging; m_cleanup_after_stackfault = false; AllocStack(); @@ -655,7 +655,7 @@ void JitArm64::Jit(u32 em_address, bool clear_cache_and_retry_on_failure) std::size_t block_size = m_code_buffer.size(); - if (SConfig::GetInstance().bEnableDebugging) + if (m_enable_debugging) { // Comment out the following to disable breakpoints (speed-up) block_size = 1; @@ -820,7 +820,7 @@ bool JitArm64::DoJit(u32 em_address, JitBlock* b, u32 nextPC) js.downcountAmount += opinfo->numCycles; js.isLastInstruction = i == (code_block.m_num_instructions - 1); - if (!SConfig::GetInstance().bEnableDebugging) + if (!m_enable_debugging) js.downcountAmount += PatchEngine::GetSpeedhackCycles(js.compilerPC); // Skip calling UpdateLastUsed for lmw/stmw - it usually hurts more than it helps diff --git a/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp b/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp index f7083d34db..dc17ad47e4 100644 --- a/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp +++ b/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp @@ -48,6 +48,8 @@ void JitBase::RefreshConfig() bJITSystemRegistersOff = Config::Get(Config::MAIN_DEBUG_JIT_SYSTEM_REGISTERS_OFF); bJITBranchOff = Config::Get(Config::MAIN_DEBUG_JIT_BRANCH_OFF); bJITRegisterCacheOff = Config::Get(Config::MAIN_DEBUG_JIT_REGISTER_CACHE_OFF); + m_enable_debugging = Config::Get(Config::MAIN_ENABLE_DEBUGGING); + analyzer.SetDebuggingEnabled(m_enable_debugging); } bool JitBase::CanMergeNextInstructions(int count) const @@ -57,8 +59,7 @@ bool JitBase::CanMergeNextInstructions(int count) const // Be careful: a breakpoint kills flags in between instructions for (int i = 1; i <= count; i++) { - if (SConfig::GetInstance().bEnableDebugging && - PowerPC::breakpoints.IsAddressBreakPoint(js.op[i].address)) + if (m_enable_debugging && PowerPC::breakpoints.IsAddressBreakPoint(js.op[i].address)) return false; if (js.op[i].isBranchTarget) return false; diff --git a/Source/Core/Core/PowerPC/JitCommon/JitBase.h b/Source/Core/Core/PowerPC/JitCommon/JitBase.h index 34da6011ee..d13728eb28 100644 --- a/Source/Core/Core/PowerPC/JitCommon/JitBase.h +++ b/Source/Core/Core/PowerPC/JitCommon/JitBase.h @@ -126,6 +126,7 @@ protected: bool bJITSystemRegistersOff = false; bool bJITBranchOff = false; bool bJITRegisterCacheOff = false; + bool m_enable_debugging = false; void RefreshConfig(); @@ -139,6 +140,8 @@ public: JitBase(); ~JitBase() override; + bool IsDebuggingEnabled() const { return m_enable_debugging; } + static const u8* Dispatch(JitBase& jit); virtual JitBaseBlockCache* GetBlockCache() = 0; diff --git a/Source/Core/Core/PowerPC/PPCAnalyst.cpp b/Source/Core/Core/PowerPC/PPCAnalyst.cpp index d02cc10e0c..6b4c6241e7 100644 --- a/Source/Core/Core/PowerPC/PPCAnalyst.cpp +++ b/Source/Core/Core/PowerPC/PPCAnalyst.cpp @@ -15,6 +15,7 @@ #include "Common/CommonTypes.h" #include "Common/Logging/Log.h" #include "Common/StringUtil.h" +#include "Core/Config/MainSettings.h" #include "Core/ConfigManager.h" #include "Core/PowerPC/JitCommon/JitBase.h" #include "Core/PowerPC/MMU.h" @@ -191,7 +192,7 @@ static void AnalyzeFunction2(Common::Symbol* func) func->flags = flags; } -static bool CanSwapAdjacentOps(const CodeOp& a, const CodeOp& b) +bool PPCAnalyzer::CanSwapAdjacentOps(const CodeOp& a, const CodeOp& b) { const GekkoOPInfo* a_info = a.opinfo; const GekkoOPInfo* b_info = b.opinfo; @@ -199,10 +200,11 @@ static bool CanSwapAdjacentOps(const CodeOp& a, const CodeOp& b) u64 b_flags = b_info->flags; // can't reorder around breakpoints - if (SConfig::GetInstance().bEnableDebugging && - (PowerPC::breakpoints.IsAddressBreakPoint(a.address) || - PowerPC::breakpoints.IsAddressBreakPoint(b.address))) + if (m_is_debugging_enabled && (PowerPC::breakpoints.IsAddressBreakPoint(a.address) || + PowerPC::breakpoints.IsAddressBreakPoint(b.address))) + { return false; + } if (b_flags & (FL_SET_CRx | FL_ENDBLOCK | FL_TIMER | FL_EVIL | FL_SET_OE)) return false; if ((b_flags & (FL_RC_BIT | FL_RC_BIT_F)) && (b.inst.Rc)) diff --git a/Source/Core/Core/PowerPC/PPCAnalyst.h b/Source/Core/Core/PowerPC/PPCAnalyst.h index 4dfd043f41..8c1dfc47ef 100644 --- a/Source/Core/Core/PowerPC/PPCAnalyst.h +++ b/Source/Core/Core/PowerPC/PPCAnalyst.h @@ -215,6 +215,7 @@ public: void SetOption(AnalystOption option) { m_options |= option; } void ClearOption(AnalystOption option) { m_options &= ~(option); } bool HasOption(AnalystOption option) const { return !!(m_options & option); } + void SetDebuggingEnabled(bool enabled) { m_is_debugging_enabled = enabled; } u32 Analyze(u32 address, CodeBlock* block, CodeBuffer* buffer, std::size_t block_size); private: @@ -225,6 +226,7 @@ private: CROR }; + bool CanSwapAdjacentOps(const CodeOp& a, const CodeOp& b); void ReorderInstructionsCore(u32 instructions, CodeOp* code, bool reverse, ReorderType type); void ReorderInstructions(u32 instructions, CodeOp* code); void SetInstructionStats(CodeBlock* block, CodeOp* code, const GekkoOPInfo* opinfo, u32 index); @@ -232,6 +234,8 @@ private: // Options u32 m_options = 0; + + bool m_is_debugging_enabled = false; }; void FindFunctions(u32 startAddr, u32 endAddr, PPCSymbolDB* func_db); diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index a6a956d684..7007a76494 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -18,6 +18,7 @@ #include "Common/FloatUtils.h" #include "Common/Logging/Log.h" +#include "Core/Config/MainSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/CoreTiming.h" @@ -264,7 +265,7 @@ void Init(CPUCore cpu_core) InitializeCPUCore(cpu_core); ppcState.iCache.Init(); - if (SConfig::GetInstance().bEnableDebugging) + if (Config::Get(Config::MAIN_ENABLE_DEBUGGING)) breakpoints.ClearAllTemporary(); } diff --git a/Source/Core/Core/TitleDatabase.cpp b/Source/Core/Core/TitleDatabase.cpp index 8d640f020f..d53a298350 100644 --- a/Source/Core/Core/TitleDatabase.cpp +++ b/Source/Core/Core/TitleDatabase.cpp @@ -16,7 +16,7 @@ #include "Common/FileUtil.h" #include "Common/MsgHandler.h" #include "Common/StringUtil.h" -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "Core/IOS/ES/Formats.h" #include "DiscIO/Enums.h" @@ -97,7 +97,7 @@ const std::string& TitleDatabase::GetTitleName(const std::string& gametdb_id, if (it != m_user_title_map.end()) return it->second; - if (!SConfig::GetInstance().m_use_builtin_title_database) + if (!Config::Get(Config::MAIN_USE_BUILT_IN_TITLE_DATABASE)) return EMPTY_STRING; const Map& map = *m_title_maps.at(language); diff --git a/Source/Core/DolphinNoGUI/PlatformX11.cpp b/Source/Core/DolphinNoGUI/PlatformX11.cpp index 4ba2c1b3b9..27d3ca120c 100644 --- a/Source/Core/DolphinNoGUI/PlatformX11.cpp +++ b/Source/Core/DolphinNoGUI/PlatformX11.cpp @@ -13,7 +13,6 @@ static constexpr auto X_None = None; #include "Common/MsgHandler.h" #include "Core/Config/MainSettings.h" -#include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/State.h" @@ -70,7 +69,7 @@ PlatformX11::~PlatformX11() if (m_display) { - if (SConfig::GetInstance().m_show_cursor == SConfig::ShowCursor::Never) + if (Config::Get(Config::MAIN_SHOW_CURSOR) == Config::ShowCursor::Never) XFreeCursor(m_display, m_blank_cursor); XCloseDisplay(m_display); @@ -115,7 +114,7 @@ bool PlatformX11::Init() m_xrr_config = new X11Utils::XRRConfiguration(m_display, m_window); #endif - if (SConfig::GetInstance().m_show_cursor == SConfig::ShowCursor::Never) + if (Config::Get(Config::MAIN_SHOW_CURSOR) == Config::ShowCursor::Never) { // make a blank cursor Pixmap Blank; @@ -200,13 +199,13 @@ void PlatformX11::ProcessEvents() { if (Core::GetState() == Core::State::Running) { - if (SConfig::GetInstance().m_show_cursor == SConfig::ShowCursor::Never) + if (Config::Get(Config::MAIN_SHOW_CURSOR) == Config::ShowCursor::Never) XUndefineCursor(m_display, m_window); Core::SetState(Core::State::Paused); } else { - if (SConfig::GetInstance().m_show_cursor == SConfig::ShowCursor::Never) + if (Config::Get(Config::MAIN_SHOW_CURSOR) == Config::ShowCursor::Never) XDefineCursor(m_display, m_window, m_blank_cursor); Core::SetState(Core::State::Running); } @@ -243,7 +242,7 @@ void PlatformX11::ProcessEvents() case FocusIn: { m_window_focus = true; - if (SConfig::GetInstance().m_show_cursor == SConfig::ShowCursor::Never && + if (Config::Get(Config::MAIN_SHOW_CURSOR) == Config::ShowCursor::Never && Core::GetState() != Core::State::Paused) XDefineCursor(m_display, m_window, m_blank_cursor); } @@ -251,7 +250,7 @@ void PlatformX11::ProcessEvents() case FocusOut: { m_window_focus = false; - if (SConfig::GetInstance().m_show_cursor == SConfig::ShowCursor::Never) + if (Config::Get(Config::MAIN_SHOW_CURSOR) == Config::ShowCursor::Never) XUndefineCursor(m_display, m_window); } break; diff --git a/Source/Core/DolphinQt/Debugger/JITWidget.cpp b/Source/Core/DolphinQt/Debugger/JITWidget.cpp index b0d37ed7fd..e9c7c9fc0e 100644 --- a/Source/Core/DolphinQt/Debugger/JITWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/JITWidget.cpp @@ -156,6 +156,7 @@ void JITWidget::Update() PPCAnalyst::BlockRegStats fpa; PPCAnalyst::CodeBlock code_block; PPCAnalyst::PPCAnalyzer analyzer; + analyzer.SetDebuggingEnabled(Config::Get(Config::MAIN_ENABLE_DEBUGGING)); analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE); analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_BRANCH_FOLLOW); diff --git a/Source/Core/DolphinQt/HotkeyScheduler.cpp b/Source/Core/DolphinQt/HotkeyScheduler.cpp index ad2b74a615..4fa3031e63 100644 --- a/Source/Core/DolphinQt/HotkeyScheduler.cpp +++ b/Source/Core/DolphinQt/HotkeyScheduler.cpp @@ -254,7 +254,7 @@ void HotkeyScheduler::Run() if (auto bt = WiiUtils::GetBluetoothRealDevice()) bt->UpdateSyncButtonState(IsHotkey(HK_TRIGGER_SYNC_BUTTON, true)); - if (SConfig::GetInstance().bEnableDebugging) + if (Config::Get(Config::MAIN_ENABLE_DEBUGGING)) { CheckDebuggingHotkeys(); } diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index be391bea11..ef462d313f 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -861,7 +861,7 @@ bool MainWindow::RequestStop() else FullScreen(); - if (SConfig::GetInstance().bConfirmStop) + if (Config::Get(Config::MAIN_CONFIRM_ON_STOP)) { if (std::exchange(m_stop_confirm_showing, true)) return true; diff --git a/Source/Core/DolphinQt/RenderWidget.cpp b/Source/Core/DolphinQt/RenderWidget.cpp index c97814a2f1..68ff3c5a49 100644 --- a/Source/Core/DolphinQt/RenderWidget.cpp +++ b/Source/Core/DolphinQt/RenderWidget.cpp @@ -22,7 +22,6 @@ #include #include "Core/Config/MainSettings.h" -#include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/State.h" @@ -156,14 +155,14 @@ void RenderWidget::UpdateCursor() // on top of the game window in the background const bool keep_on_top = (windowFlags() & Qt::WindowStaysOnTopHint) != 0; const bool should_hide = - (Settings::Instance().GetCursorVisibility() == SConfig::ShowCursor::Never) && + (Settings::Instance().GetCursorVisibility() == Config::ShowCursor::Never) && (keep_on_top || Config::Get(Config::MAIN_INPUT_BACKGROUND_INPUT) || isActiveWindow()); setCursor(should_hide ? Qt::BlankCursor : Qt::ArrowCursor); } else { setCursor((m_cursor_locked && - Settings::Instance().GetCursorVisibility() == SConfig::ShowCursor::Never) ? + Settings::Instance().GetCursorVisibility() == Config::ShowCursor::Never) ? Qt::BlankCursor : Qt::ArrowCursor); } @@ -189,7 +188,7 @@ void RenderWidget::HandleCursorTimer() if (!isActiveWindow()) return; if ((!Settings::Instance().GetLockCursor() || m_cursor_locked) && - Settings::Instance().GetCursorVisibility() == SConfig::ShowCursor::OnMovement) + Settings::Instance().GetCursorVisibility() == Config::ShowCursor::OnMovement) { setCursor(Qt::BlankCursor); } @@ -272,7 +271,7 @@ void RenderWidget::SetCursorLocked(bool locked, bool follow_aspect_ratio) { m_cursor_locked = true; - if (Settings::Instance().GetCursorVisibility() != SConfig::ShowCursor::Constantly) + if (Settings::Instance().GetCursorVisibility() != Config::ShowCursor::Constantly) { setCursor(Qt::BlankCursor); } @@ -374,7 +373,7 @@ bool RenderWidget::event(QEvent* event) break; case QEvent::MouseMove: // Unhide on movement - if (Settings::Instance().GetCursorVisibility() == SConfig::ShowCursor::OnMovement) + if (Settings::Instance().GetCursorVisibility() == Config::ShowCursor::OnMovement) { setCursor(Qt::ArrowCursor); m_mouse_timer->start(MOUSE_HIDE_DELAY); @@ -386,7 +385,7 @@ bool RenderWidget::event(QEvent* event) case QEvent::Show: // Don't do if "stay on top" changed (or was true) if (Settings::Instance().GetLockCursor() && - Settings::Instance().GetCursorVisibility() != SConfig::ShowCursor::Constantly && + Settings::Instance().GetCursorVisibility() != Config::ShowCursor::Constantly && !m_dont_lock_cursor_on_show) { // Auto lock when this window is shown (it was hidden) @@ -399,7 +398,7 @@ bool RenderWidget::event(QEvent* event) // Note that this event in Windows is not always aligned to the window that is highlighted, // it's the window that has keyboard and mouse focus case QEvent::WindowActivate: - if (SConfig::GetInstance().m_PauseOnFocusLost && Core::GetState() == Core::State::Paused) + if (Config::Get(Config::MAIN_PAUSE_ON_FOCUS_LOST) && Core::GetState() == Core::State::Paused) Core::SetState(Core::State::Running); UpdateCursor(); @@ -421,7 +420,7 @@ bool RenderWidget::event(QEvent* event) UpdateCursor(); - if (SConfig::GetInstance().m_PauseOnFocusLost && Core::GetState() == Core::State::Running) + if (Config::Get(Config::MAIN_PAUSE_ON_FOCUS_LOST) && Core::GetState() == Core::State::Running) { // If we are declared as the CPU thread, it means that the real CPU thread is waiting // for us to finish showing a panic alert (with that panic alert likely being the cause diff --git a/Source/Core/DolphinQt/Resources.cpp b/Source/Core/DolphinQt/Resources.cpp index 752fdb4a7d..2a646bdc02 100644 --- a/Source/Core/DolphinQt/Resources.cpp +++ b/Source/Core/DolphinQt/Resources.cpp @@ -10,7 +10,7 @@ #include "Common/FileUtil.h" -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "DolphinQt/Settings.h" @@ -52,7 +52,7 @@ QPixmap Resources::GetPixmap(std::string_view name, const QString& dir) static QString GetCurrentThemeDir() { - return QString::fromStdString(File::GetThemeDir(SConfig::GetInstance().theme_name)); + return QString::fromStdString(File::GetThemeDir(Config::Get(Config::MAIN_THEME_NAME))); } static QString GetResourcesDir() diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp index 6c6050bf73..b283e0baeb 100644 --- a/Source/Core/DolphinQt/Settings.cpp +++ b/Source/Core/DolphinQt/Settings.cpp @@ -106,7 +106,7 @@ QSettings& Settings::GetQSettings() void Settings::SetThemeName(const QString& theme_name) { - SConfig::GetInstance().theme_name = theme_name.toStdString(); + Config::SetBaseOrCurrent(Config::MAIN_THEME_NAME, theme_name.toStdString()); emit ThemeChanged(); } @@ -325,27 +325,26 @@ void Settings::SetStateSlot(int slot) GetQSettings().setValue(QStringLiteral("Emulation/StateSlot"), slot); } -void Settings::SetCursorVisibility(SConfig::ShowCursor hideCursor) +void Settings::SetCursorVisibility(Config::ShowCursor hideCursor) { - SConfig::GetInstance().m_show_cursor = hideCursor; - + Config::SetBaseOrCurrent(Config::MAIN_SHOW_CURSOR, hideCursor); emit CursorVisibilityChanged(); } -SConfig::ShowCursor Settings::GetCursorVisibility() const +Config::ShowCursor Settings::GetCursorVisibility() const { - return SConfig::GetInstance().m_show_cursor; + return Config::Get(Config::MAIN_SHOW_CURSOR); } void Settings::SetLockCursor(bool lock_cursor) { - SConfig::GetInstance().bLockCursor = lock_cursor; + Config::SetBaseOrCurrent(Config::MAIN_LOCK_CURSOR, lock_cursor); emit LockCursorChanged(); } bool Settings::GetLockCursor() const { - return SConfig::GetInstance().bLockCursor; + return Config::Get(Config::MAIN_LOCK_CURSOR); } void Settings::SetKeepWindowOnTop(bool top) @@ -457,7 +456,7 @@ void Settings::SetDebugModeEnabled(bool enabled) { if (IsDebugModeEnabled() != enabled) { - SConfig::GetInstance().bEnableDebugging = enabled; + Config::SetBaseOrCurrent(Config::MAIN_ENABLE_DEBUGGING, enabled); emit DebugModeToggled(enabled); } if (enabled) @@ -466,7 +465,7 @@ void Settings::SetDebugModeEnabled(bool enabled) bool Settings::IsDebugModeEnabled() const { - return SConfig::GetInstance().bEnableDebugging; + return Config::Get(Config::MAIN_ENABLE_DEBUGGING); } void Settings::SetRegistersVisible(bool enabled) diff --git a/Source/Core/DolphinQt/Settings.h b/Source/Core/DolphinQt/Settings.h index 3ec5e04834..1471daddec 100644 --- a/Source/Core/DolphinQt/Settings.h +++ b/Source/Core/DolphinQt/Settings.h @@ -10,7 +10,7 @@ #include #include -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "DiscIO/Enums.h" namespace Core @@ -99,8 +99,8 @@ public: void SetUSBKeyboardConnected(bool connected); // Graphics - void SetCursorVisibility(SConfig::ShowCursor hideCursor); - SConfig::ShowCursor GetCursorVisibility() const; + void SetCursorVisibility(Config::ShowCursor hideCursor); + Config::ShowCursor GetCursorVisibility() const; void SetLockCursor(bool lock_cursor); bool GetLockCursor() const; void SetKeepWindowOnTop(bool top); diff --git a/Source/Core/DolphinQt/Settings/InterfacePane.cpp b/Source/Core/DolphinQt/Settings/InterfacePane.cpp index a42dc90a52..db95fb308c 100644 --- a/Source/Core/DolphinQt/Settings/InterfacePane.cpp +++ b/Source/Core/DolphinQt/Settings/InterfacePane.cpp @@ -21,7 +21,6 @@ #include "Core/Config/MainSettings.h" #include "Core/Config/UISettings.h" -#include "Core/ConfigManager.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/Settings.h" @@ -238,13 +237,13 @@ void InterfacePane::ConnectLayout() void InterfacePane::LoadConfig() { - const SConfig& startup_params = SConfig::GetInstance(); - m_checkbox_use_builtin_title_database->setChecked(startup_params.m_use_builtin_title_database); + m_checkbox_use_builtin_title_database->setChecked( + Config::Get(Config::MAIN_USE_BUILT_IN_TITLE_DATABASE)); m_checkbox_show_debugging_ui->setChecked(Settings::Instance().IsDebugModeEnabled()); m_combobox_language->setCurrentIndex(m_combobox_language->findData( - QString::fromStdString(SConfig::GetInstance().m_InterfaceLanguage))); + QString::fromStdString(Config::Get(Config::MAIN_INTERFACE_LANGUAGE)))); m_combobox_theme->setCurrentIndex( - m_combobox_theme->findText(QString::fromStdString(SConfig::GetInstance().theme_name))); + m_combobox_theme->findText(QString::fromStdString(Config::Get(Config::MAIN_THEME_NAME)))); const QString userstyle = Settings::Instance().GetCurrentUserStyle(); const int index = m_combobox_userstyle->findData(QFileInfo(userstyle).fileName()); @@ -261,19 +260,19 @@ void InterfacePane::LoadConfig() // Render Window Options m_checkbox_top_window->setChecked(Settings::Instance().IsKeepWindowOnTopEnabled()); - m_checkbox_confirm_on_stop->setChecked(startup_params.bConfirmStop); + m_checkbox_confirm_on_stop->setChecked(Config::Get(Config::MAIN_CONFIRM_ON_STOP)); m_checkbox_use_panic_handlers->setChecked(Config::Get(Config::MAIN_USE_PANIC_HANDLERS)); m_checkbox_enable_osd->setChecked(Config::Get(Config::MAIN_OSD_MESSAGES)); - m_checkbox_show_active_title->setChecked(startup_params.m_show_active_title); - m_checkbox_pause_on_focus_lost->setChecked(startup_params.m_PauseOnFocusLost); + m_checkbox_show_active_title->setChecked(Config::Get(Config::MAIN_SHOW_ACTIVE_TITLE)); + m_checkbox_pause_on_focus_lost->setChecked(Config::Get(Config::MAIN_PAUSE_ON_FOCUS_LOST)); m_checkbox_use_covers->setChecked(Config::Get(Config::MAIN_USE_GAME_COVERS)); m_checkbox_focused_hotkeys->setChecked(Config::Get(Config::MAIN_FOCUSED_HOTKEYS)); m_radio_cursor_visible_movement->setChecked(Settings::Instance().GetCursorVisibility() == - SConfig::ShowCursor::OnMovement); + Config::ShowCursor::OnMovement); m_radio_cursor_visible_always->setChecked(Settings::Instance().GetCursorVisibility() == - SConfig::ShowCursor::Constantly); + Config::ShowCursor::Constantly); m_radio_cursor_visible_never->setChecked(Settings::Instance().GetCursorVisibility() == - SConfig::ShowCursor::Never); + Config::ShowCursor::Never); m_checkbox_lock_mouse->setChecked(Settings::Instance().GetLockCursor()); m_checkbox_disable_screensaver->setChecked(Config::Get(Config::MAIN_DISABLE_SCREENSAVER)); @@ -281,8 +280,8 @@ void InterfacePane::LoadConfig() void InterfacePane::OnSaveConfig() { - SConfig& settings = SConfig::GetInstance(); - settings.m_use_builtin_title_database = m_checkbox_use_builtin_title_database->isChecked(); + Config::SetBase(Config::MAIN_USE_BUILT_IN_TITLE_DATABASE, + m_checkbox_use_builtin_title_database->isChecked()); Settings::Instance().SetDebugModeEnabled(m_checkbox_show_debugging_ui->isChecked()); Settings::Instance().SetUserStylesEnabled(m_checkbox_use_userstyle->isChecked()); Settings::Instance().SetCurrentUserStyle(m_combobox_userstyle->currentData().toString()); @@ -294,18 +293,18 @@ void InterfacePane::OnSaveConfig() // Render Window Options Settings::Instance().SetKeepWindowOnTop(m_checkbox_top_window->isChecked()); - settings.bConfirmStop = m_checkbox_confirm_on_stop->isChecked(); + Config::SetBase(Config::MAIN_CONFIRM_ON_STOP, m_checkbox_confirm_on_stop->isChecked()); Config::SetBase(Config::MAIN_USE_PANIC_HANDLERS, m_checkbox_use_panic_handlers->isChecked()); Config::SetBase(Config::MAIN_OSD_MESSAGES, m_checkbox_enable_osd->isChecked()); - settings.m_show_active_title = m_checkbox_show_active_title->isChecked(); - settings.m_PauseOnFocusLost = m_checkbox_pause_on_focus_lost->isChecked(); + Config::SetBase(Config::MAIN_SHOW_ACTIVE_TITLE, m_checkbox_show_active_title->isChecked()); + Config::SetBase(Config::MAIN_PAUSE_ON_FOCUS_LOST, m_checkbox_pause_on_focus_lost->isChecked()); Common::SetEnableAlert(Config::Get(Config::MAIN_USE_PANIC_HANDLERS)); auto new_language = m_combobox_language->currentData().toString().toStdString(); - if (new_language != SConfig::GetInstance().m_InterfaceLanguage) + if (new_language != Config::Get(Config::MAIN_INTERFACE_LANGUAGE)) { - SConfig::GetInstance().m_InterfaceLanguage = new_language; + Config::SetBase(Config::MAIN_INTERFACE_LANGUAGE, new_language); ModalMessageBox::information( this, tr("Restart Required"), tr("You must restart Dolphin in order for the change to take effect.")); @@ -322,20 +321,20 @@ void InterfacePane::OnSaveConfig() Config::SetBase(Config::MAIN_FOCUSED_HOTKEYS, m_checkbox_focused_hotkeys->isChecked()); Config::SetBase(Config::MAIN_DISABLE_SCREENSAVER, m_checkbox_disable_screensaver->isChecked()); - settings.SaveSettings(); + Config::Save(); } void InterfacePane::OnCursorVisibleMovement() { - Settings::Instance().SetCursorVisibility(SConfig::ShowCursor::OnMovement); + Settings::Instance().SetCursorVisibility(Config::ShowCursor::OnMovement); } void InterfacePane::OnCursorVisibleNever() { - Settings::Instance().SetCursorVisibility(SConfig::ShowCursor::Never); + Settings::Instance().SetCursorVisibility(Config::ShowCursor::Never); } void InterfacePane::OnCursorVisibleAlways() { - Settings::Instance().SetCursorVisibility(SConfig::ShowCursor::Constantly); + Settings::Instance().SetCursorVisibility(Config::ShowCursor::Constantly); } diff --git a/Source/Core/DolphinQt/Translation.cpp b/Source/Core/DolphinQt/Translation.cpp index 8fd6f65a60..e64eaa5984 100644 --- a/Source/Core/DolphinQt/Translation.cpp +++ b/Source/Core/DolphinQt/Translation.cpp @@ -17,7 +17,7 @@ #include "Common/MsgHandler.h" #include "Common/StringUtil.h" -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" @@ -310,7 +310,7 @@ void Translation::Initialize() [](const char* text) { return QObject::tr(text).toStdString(); }); // Hook up Qt translations - auto& configured_language = SConfig::GetInstance().m_InterfaceLanguage; + std::string configured_language = Config::Get(Config::MAIN_INTERFACE_LANGUAGE); if (!configured_language.empty()) { if (TryInstallTranslator(QString::fromStdString(configured_language))) @@ -319,7 +319,7 @@ void Translation::Initialize() ModalMessageBox::warning( nullptr, QObject::tr("Error"), QObject::tr("Error loading selected language. Falling back to system default.")); - configured_language.clear(); + Config::SetBase(Config::MAIN_INTERFACE_LANGUAGE, ""); } for (const auto& lang : QLocale::system().uiLanguages())