WX: Automatically pause the core for the JIT menu items

Removes the need to manually pause the core, select the menu item and
then unpause.
This commit is contained in:
Léo Lam 2017-07-28 12:33:50 +08:00
parent f777c01c5d
commit 23ae756192
2 changed files with 57 additions and 55 deletions

View File

@ -480,48 +480,50 @@ void CCodeWindow::UpdateCallstack()
// CPU Mode and JIT Menu // CPU Mode and JIT Menu
void CCodeWindow::OnCPUMode(wxCommandEvent& event) void CCodeWindow::OnCPUMode(wxCommandEvent& event)
{ {
switch (event.GetId()) Core::RunAsCPUThread([&event] {
{ switch (event.GetId())
case IDM_INTERPRETER: {
PowerPC::SetMode(event.IsChecked() ? PowerPC::CoreMode::Interpreter : PowerPC::CoreMode::JIT); case IDM_INTERPRETER:
break; PowerPC::SetMode(event.IsChecked() ? PowerPC::CoreMode::Interpreter : PowerPC::CoreMode::JIT);
case IDM_JIT_OFF: break;
SConfig::GetInstance().bJITOff = event.IsChecked(); case IDM_JIT_OFF:
break; SConfig::GetInstance().bJITOff = event.IsChecked();
case IDM_JIT_LS_OFF: break;
SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked(); case IDM_JIT_LS_OFF:
break; SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked();
case IDM_JIT_LSLXZ_OFF: break;
SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked(); case IDM_JIT_LSLXZ_OFF:
break; SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked();
case IDM_JIT_LSLWZ_OFF: break;
SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked(); case IDM_JIT_LSLWZ_OFF:
break; SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked();
case IDM_JIT_LSLBZX_OFF: break;
SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked(); case IDM_JIT_LSLBZX_OFF:
break; SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked();
case IDM_JIT_LSF_OFF: break;
SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked(); case IDM_JIT_LSF_OFF:
break; SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked();
case IDM_JIT_LSP_OFF: break;
SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked(); case IDM_JIT_LSP_OFF:
break; SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked();
case IDM_JIT_FP_OFF: break;
SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked(); case IDM_JIT_FP_OFF:
break; SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked();
case IDM_JIT_I_OFF: break;
SConfig::GetInstance().bJITIntegerOff = event.IsChecked(); case IDM_JIT_I_OFF:
break; SConfig::GetInstance().bJITIntegerOff = event.IsChecked();
case IDM_JIT_P_OFF: break;
SConfig::GetInstance().bJITPairedOff = event.IsChecked(); case IDM_JIT_P_OFF:
break; SConfig::GetInstance().bJITPairedOff = event.IsChecked();
case IDM_JIT_SR_OFF: break;
SConfig::GetInstance().bJITSystemRegistersOff = event.IsChecked(); case IDM_JIT_SR_OFF:
break; SConfig::GetInstance().bJITSystemRegistersOff = event.IsChecked();
} break;
}
// Clear the JIT cache to enable these changes // Clear the JIT cache to enable these changes
JitInterface::ClearCache(); JitInterface::ClearCache();
});
} }
void CCodeWindow::OnJitMenu(wxCommandEvent& event) void CCodeWindow::OnJitMenu(wxCommandEvent& event)
@ -533,7 +535,7 @@ void CCodeWindow::OnJitMenu(wxCommandEvent& event)
break; break;
case IDM_CLEAR_CODE_CACHE: case IDM_CLEAR_CODE_CACHE:
JitInterface::ClearCache(); Core::RunAsCPUThread(JitInterface::ClearCache);
break; break;
case IDM_SEARCH_INSTRUCTION: case IDM_SEARCH_INSTRUCTION:

View File

@ -237,18 +237,18 @@ void CFrame::BindDebuggerMenuBarUpdateEvents()
Bind(wxEVT_UPDATE_UI, &CFrame::OnUpdateInterpreterMenuItem, this, IDM_INTERPRETER); Bind(wxEVT_UPDATE_UI, &CFrame::OnUpdateInterpreterMenuItem, this, IDM_INTERPRETER);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_LS_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_LS_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_LSLXZ_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_LSLXZ_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_LSLWZ_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_LSLWZ_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_LSLBZX_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_LSLBZX_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_LSF_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_LSF_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_LSP_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_LSP_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_FP_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_FP_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_I_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_I_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_P_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_P_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_JIT_SR_OFF); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_JIT_SR_OFF);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCorePaused, IDM_CLEAR_CODE_CACHE); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreRunning, IDM_CLEAR_CODE_CACHE);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_SEARCH_INSTRUCTION); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_SEARCH_INSTRUCTION);
Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_CLEAR_SYMBOLS); Bind(wxEVT_UPDATE_UI, &WxEventUtils::OnEnableIfCoreInitialized, IDM_CLEAR_SYMBOLS);
@ -1111,7 +1111,7 @@ void CFrame::OnRescanGameList(wxCommandEvent& WXUNUSED(event))
void CFrame::OnUpdateInterpreterMenuItem(wxUpdateUIEvent& event) void CFrame::OnUpdateInterpreterMenuItem(wxUpdateUIEvent& event)
{ {
WxEventUtils::OnEnableIfCorePaused(event); WxEventUtils::OnEnableIfCoreRunning(event);
if (GetMenuBar()->FindItem(IDM_INTERPRETER)->IsChecked()) if (GetMenuBar()->FindItem(IDM_INTERPRETER)->IsChecked())
return; return;