summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/Debugger/CodeWindow.cpp
diff options
context:
space:
mode:
authorLeo Lam <leolino.lam@gmail.com>2017-08-07 13:21:54 +0800
committerGitHub <noreply@github.com>2017-08-07 13:21:54 +0800
commitdbb26a2b54a66f67824667c26fd3659f45234f2c (patch)
tree712e72bbf4c26d3d3eb7f6583bc675307e65abe4 /Source/Core/DolphinWX/Debugger/CodeWindow.cpp
parent3b5cad66820441373d8210fb0d40166748fd2a62 (diff)
parent23ae756192131938e189c491c01c952c5287736b (diff)
Merge pull request #5837 from leoetlino/auto-pause
WX: Automatically pause the core for the JIT menu items
Diffstat (limited to 'Source/Core/DolphinWX/Debugger/CodeWindow.cpp')
-rw-r--r--Source/Core/DolphinWX/Debugger/CodeWindow.cpp94
1 files changed, 46 insertions, 48 deletions
diff --git a/Source/Core/DolphinWX/Debugger/CodeWindow.cpp b/Source/Core/DolphinWX/Debugger/CodeWindow.cpp
index c1e10e248e..4f14da7302 100644
--- a/Source/Core/DolphinWX/Debugger/CodeWindow.cpp
+++ b/Source/Core/DolphinWX/Debugger/CodeWindow.cpp
@@ -123,6 +123,8 @@ CCodeWindow::CCodeWindow(CFrame* parent, wxWindowID id, const wxPoint& position,
Bind(wxEVT_MENU, &CCodeWindow::OnJitMenu, this, IDM_CLEAR_CODE_CACHE, IDM_SEARCH_INSTRUCTION);
Bind(wxEVT_MENU, &CCodeWindow::OnSymbolsMenu, this, IDM_CLEAR_SYMBOLS, IDM_PATCH_HLE_FUNCTIONS);
Bind(wxEVT_MENU, &CCodeWindow::OnProfilerMenu, this, IDM_PROFILE_BLOCKS, IDM_WRITE_PROFILE);
+ Bind(wxEVT_MENU, &CCodeWindow::OnBootToPauseSelected, this, IDM_BOOT_TO_PAUSE);
+ Bind(wxEVT_MENU, &CCodeWindow::OnAutomaticStartSelected, this, IDM_AUTOMATIC_START);
// Toolbar
Bind(wxEVT_MENU, &CCodeWindow::OnCodeStep, this, IDM_STEP, IDM_GOTOPC);
@@ -478,54 +480,50 @@ void CCodeWindow::UpdateCallstack()
// CPU Mode and JIT Menu
void CCodeWindow::OnCPUMode(wxCommandEvent& event)
{
- switch (event.GetId())
- {
- case IDM_INTERPRETER:
- PowerPC::SetMode(event.IsChecked() ? PowerPC::CoreMode::Interpreter : PowerPC::CoreMode::JIT);
- break;
- case IDM_BOOT_TO_PAUSE:
- SConfig::GetInstance().bBootToPause = event.IsChecked();
- return;
- case IDM_AUTOMATIC_START:
- SConfig::GetInstance().bAutomaticStart = event.IsChecked();
- return;
- case IDM_JIT_OFF:
- SConfig::GetInstance().bJITOff = event.IsChecked();
- break;
- case IDM_JIT_LS_OFF:
- SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked();
- break;
- case IDM_JIT_LSLXZ_OFF:
- SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked();
- break;
- case IDM_JIT_LSLWZ_OFF:
- SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked();
- break;
- case IDM_JIT_LSLBZX_OFF:
- SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked();
- break;
- case IDM_JIT_LSF_OFF:
- SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked();
- break;
- case IDM_JIT_LSP_OFF:
- SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked();
- break;
- case IDM_JIT_FP_OFF:
- SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked();
- break;
- case IDM_JIT_I_OFF:
- SConfig::GetInstance().bJITIntegerOff = event.IsChecked();
- break;
- case IDM_JIT_P_OFF:
- SConfig::GetInstance().bJITPairedOff = event.IsChecked();
- break;
- case IDM_JIT_SR_OFF:
- SConfig::GetInstance().bJITSystemRegistersOff = event.IsChecked();
- break;
- }
+ Core::RunAsCPUThread([&event] {
+ switch (event.GetId())
+ {
+ case IDM_INTERPRETER:
+ PowerPC::SetMode(event.IsChecked() ? PowerPC::CoreMode::Interpreter : PowerPC::CoreMode::JIT);
+ break;
+ case IDM_JIT_OFF:
+ SConfig::GetInstance().bJITOff = event.IsChecked();
+ break;
+ case IDM_JIT_LS_OFF:
+ SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked();
+ break;
+ case IDM_JIT_LSLXZ_OFF:
+ SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked();
+ break;
+ case IDM_JIT_LSLWZ_OFF:
+ SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked();
+ break;
+ case IDM_JIT_LSLBZX_OFF:
+ SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked();
+ break;
+ case IDM_JIT_LSF_OFF:
+ SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked();
+ break;
+ case IDM_JIT_LSP_OFF:
+ SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked();
+ break;
+ case IDM_JIT_FP_OFF:
+ SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked();
+ break;
+ case IDM_JIT_I_OFF:
+ SConfig::GetInstance().bJITIntegerOff = event.IsChecked();
+ break;
+ case IDM_JIT_P_OFF:
+ SConfig::GetInstance().bJITPairedOff = event.IsChecked();
+ break;
+ case IDM_JIT_SR_OFF:
+ SConfig::GetInstance().bJITSystemRegistersOff = event.IsChecked();
+ break;
+ }
- // Clear the JIT cache to enable these changes
- JitInterface::ClearCache();
+ // Clear the JIT cache to enable these changes
+ JitInterface::ClearCache();
+ });
}
void CCodeWindow::OnJitMenu(wxCommandEvent& event)
@@ -537,7 +535,7 @@ void CCodeWindow::OnJitMenu(wxCommandEvent& event)
break;
case IDM_CLEAR_CODE_CACHE:
- JitInterface::ClearCache();
+ Core::RunAsCPUThread(JitInterface::ClearCache);
break;
case IDM_SEARCH_INSTRUCTION: