From 792446e1da3c075882205ff0d7559bea12f50e85 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 26 May 2018 14:19:53 +0200 Subject: [PATCH] When CPU core is invalid, fall back to JIT instead of interpreter This might happen if someone moves settings between e.g. a PC and an Android device, or if someone was using JITIL and updates Dolphin. I also made the panic alert a bit more explanatory. --- Source/Core/Core/PowerPC/JitInterface.cpp | 4 +++- Source/Core/Core/PowerPC/PowerPC.cpp | 13 +++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitInterface.cpp b/Source/Core/Core/PowerPC/JitInterface.cpp index 3a6aa29979..d2fac3eaab 100644 --- a/Source/Core/Core/PowerPC/JitInterface.cpp +++ b/Source/Core/Core/PowerPC/JitInterface.cpp @@ -64,7 +64,9 @@ CPUCoreBase* InitJitCore(int core) break; default: - PanicAlert("Unrecognizable cpu_core: %d", core); + PanicAlertT("The selected CPU emulation core (%d) is not available. " + "Please select a different CPU emulation core in the settings.", + core); g_jit = nullptr; return nullptr; } diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index 9ae77fe58b..5ec07db2b3 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -164,20 +164,13 @@ static void InitializeCPUCore(int cpu_core) s_cpu_core_base = JitInterface::InitJitCore(cpu_core); if (!s_cpu_core_base) // Handle Situations where JIT core isn't available { - WARN_LOG(POWERPC, "Jit core %d not available. Defaulting to interpreter.", cpu_core); - s_cpu_core_base = s_interpreter; + WARN_LOG(POWERPC, "CPU core %d not available. Falling back to default.", cpu_core); + s_cpu_core_base = JitInterface::InitJitCore(DefaultCPUCore()); } break; } - if (s_cpu_core_base != s_interpreter) - { - s_mode = CoreMode::JIT; - } - else - { - s_mode = CoreMode::Interpreter; - } + s_mode = s_cpu_core_base == s_interpreter ? CoreMode::Interpreter : CoreMode::JIT; } const std::vector& AvailableCPUCores()