diff options
Diffstat (limited to 'src/libui_sdl/DlgEmuSettings.cpp')
-rw-r--r-- | src/libui_sdl/DlgEmuSettings.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/libui_sdl/DlgEmuSettings.cpp b/src/libui_sdl/DlgEmuSettings.cpp index 46f5f9f..2f5ee2d 100644 --- a/src/libui_sdl/DlgEmuSettings.cpp +++ b/src/libui_sdl/DlgEmuSettings.cpp @@ -29,6 +29,7 @@ void ApplyNewSettings(int type); +extern bool RunningSomething; namespace DlgEmuSettings { @@ -57,10 +58,10 @@ void OnCancel(uiButton* btn, void* blarg) void OnOk(uiButton* btn, void* blarg) { - Config::DirectBoot = uiCheckboxChecked(cbDirectBoot); - #ifdef JIT_ENABLED - Config::JIT_Enable = uiCheckboxChecked(cbJITEnabled); + bool restart = false; + + bool enableJit = uiCheckboxChecked(cbJITEnabled); char* maxBlockSizeStr = uiEntryText(enJITMaxBlockSize); long blockSize = strtol(maxBlockSizeStr, NULL, 10); uiFreeText(maxBlockSizeStr); @@ -68,15 +69,32 @@ void OnOk(uiButton* btn, void* blarg) blockSize = 1; if (blockSize > 32) blockSize = 32; - Config::JIT_MaxBlockSize = blockSize; + + if (enableJit != Config::JIT_Enable || blockSize != Config::JIT_MaxBlockSize) + { + if (RunningSomething && + !uiMsgBoxConfirm(win, "Reset emulator", + "Changing JIT settings requires a reset.\n\nDo you want to continue?")) + return; + + Config::JIT_Enable = enableJit; + Config::JIT_MaxBlockSize = Config::JIT_MaxBlockSize; + + restart = true; + } #endif + Config::DirectBoot = uiCheckboxChecked(cbDirectBoot); + Config::Save(); uiControlDestroy(uiControl(win)); opened = false; - ApplyNewSettings(4); +#ifdef JIT_ENABLED + if (restart) + ApplyNewSettings(4); +#endif } #ifdef JIT_ENABLED |