mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-13 00:58:29 +02:00
Merge pull request #5837 from leoetlino/auto-pause
WX: Automatically pause the core for the JIT menu items
This commit is contained in:
@ -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::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::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::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
|
// Toolbar
|
||||||
Bind(wxEVT_MENU, &CCodeWindow::OnCodeStep, this, IDM_STEP, IDM_GOTOPC);
|
Bind(wxEVT_MENU, &CCodeWindow::OnCodeStep, this, IDM_STEP, IDM_GOTOPC);
|
||||||
@ -478,54 +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_BOOT_TO_PAUSE:
|
break;
|
||||||
SConfig::GetInstance().bBootToPause = event.IsChecked();
|
case IDM_JIT_OFF:
|
||||||
return;
|
SConfig::GetInstance().bJITOff = event.IsChecked();
|
||||||
case IDM_AUTOMATIC_START:
|
break;
|
||||||
SConfig::GetInstance().bAutomaticStart = event.IsChecked();
|
case IDM_JIT_LS_OFF:
|
||||||
return;
|
SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked();
|
||||||
case IDM_JIT_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITOff = event.IsChecked();
|
case IDM_JIT_LSLXZ_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked();
|
||||||
case IDM_JIT_LS_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked();
|
case IDM_JIT_LSLWZ_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked();
|
||||||
case IDM_JIT_LSLXZ_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked();
|
case IDM_JIT_LSLBZX_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked();
|
||||||
case IDM_JIT_LSLWZ_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked();
|
case IDM_JIT_LSF_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked();
|
||||||
case IDM_JIT_LSLBZX_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked();
|
case IDM_JIT_LSP_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked();
|
||||||
case IDM_JIT_LSF_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked();
|
case IDM_JIT_FP_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked();
|
||||||
case IDM_JIT_LSP_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked();
|
case IDM_JIT_I_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITIntegerOff = event.IsChecked();
|
||||||
case IDM_JIT_FP_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked();
|
case IDM_JIT_P_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITPairedOff = event.IsChecked();
|
||||||
case IDM_JIT_I_OFF:
|
break;
|
||||||
SConfig::GetInstance().bJITIntegerOff = event.IsChecked();
|
case IDM_JIT_SR_OFF:
|
||||||
break;
|
SConfig::GetInstance().bJITSystemRegistersOff = event.IsChecked();
|
||||||
case IDM_JIT_P_OFF:
|
break;
|
||||||
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
|
// Clear the JIT cache to enable these changes
|
||||||
JitInterface::ClearCache();
|
JitInterface::ClearCache();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCodeWindow::OnJitMenu(wxCommandEvent& event)
|
void CCodeWindow::OnJitMenu(wxCommandEvent& event)
|
||||||
@ -537,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:
|
||||||
|
@ -133,6 +133,9 @@ private:
|
|||||||
void OnJitMenu(wxCommandEvent& event);
|
void OnJitMenu(wxCommandEvent& event);
|
||||||
void OnProfilerMenu(wxCommandEvent& event);
|
void OnProfilerMenu(wxCommandEvent& event);
|
||||||
|
|
||||||
|
void OnBootToPauseSelected(wxCommandEvent& event);
|
||||||
|
void OnAutomaticStartSelected(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnSymbolListChange(wxCommandEvent& event);
|
void OnSymbolListChange(wxCommandEvent& event);
|
||||||
void OnCallstackListChange(wxCommandEvent& event);
|
void OnCallstackListChange(wxCommandEvent& event);
|
||||||
void OnCallersListChange(wxCommandEvent& event);
|
void OnCallersListChange(wxCommandEvent& event);
|
||||||
|
@ -505,6 +505,16 @@ void CCodeWindow::OnChangeFont(wxCommandEvent& event)
|
|||||||
// TODO: Send event to all panels that tells them to reload the font when it changes.
|
// TODO: Send event to all panels that tells them to reload the font when it changes.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CCodeWindow::OnBootToPauseSelected(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
SConfig::GetInstance().bBootToPause = event.IsChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCodeWindow::OnAutomaticStartSelected(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
SConfig::GetInstance().bAutomaticStart = event.IsChecked();
|
||||||
|
}
|
||||||
|
|
||||||
// Toggle windows
|
// Toggle windows
|
||||||
|
|
||||||
wxPanel* CCodeWindow::GetUntypedPanel(int id) const
|
wxPanel* CCodeWindow::GetUntypedPanel(int id) const
|
||||||
|
@ -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;
|
||||||
|
@ -208,8 +208,6 @@ enum
|
|||||||
// --------------------
|
// --------------------
|
||||||
// CPU Mode
|
// CPU Mode
|
||||||
IDM_INTERPRETER,
|
IDM_INTERPRETER,
|
||||||
IDM_AUTOMATIC_START,
|
|
||||||
IDM_BOOT_TO_PAUSE,
|
|
||||||
IDM_JIT_NO_BLOCK_CACHE,
|
IDM_JIT_NO_BLOCK_CACHE,
|
||||||
IDM_JIT_NO_BLOCK_LINKING, // JIT
|
IDM_JIT_NO_BLOCK_LINKING, // JIT
|
||||||
IDM_JIT_OFF,
|
IDM_JIT_OFF,
|
||||||
@ -223,7 +221,10 @@ enum
|
|||||||
IDM_JIT_FP_OFF,
|
IDM_JIT_FP_OFF,
|
||||||
IDM_JIT_P_OFF,
|
IDM_JIT_P_OFF,
|
||||||
IDM_JIT_SR_OFF,
|
IDM_JIT_SR_OFF,
|
||||||
|
|
||||||
IDM_FONT_PICKER,
|
IDM_FONT_PICKER,
|
||||||
|
IDM_AUTOMATIC_START,
|
||||||
|
IDM_BOOT_TO_PAUSE,
|
||||||
|
|
||||||
// Symbols
|
// Symbols
|
||||||
IDM_CLEAR_SYMBOLS,
|
IDM_CLEAR_SYMBOLS,
|
||||||
|
Reference in New Issue
Block a user