Qt: Keep debugger open outside of game

This commit is contained in:
Stenzek
2024-02-10 22:29:58 +09:00
parent 4a70164dac
commit e3a287de44
3 changed files with 46 additions and 34 deletions

View File

@ -608,12 +608,6 @@ void MainWindow::onSystemDestroyed()
delete m_cheat_manager_dialog;
m_cheat_manager_dialog = nullptr;
}
if (m_debugger_window)
{
delete m_debugger_window;
m_debugger_window = nullptr;
}
}
void MainWindow::onRunningGameChanged(const QString& filename, const QString& game_serial, const QString& game_title)
@ -1733,7 +1727,7 @@ void MainWindow::updateEmulationActions(bool starting, bool running, bool cheevo
m_ui.menuChangeDisc->setDisabled(starting || !running);
m_ui.menuCheats->setDisabled(starting || !running || cheevos_challenge_mode);
m_ui.actionCheatManager->setDisabled(starting || !running || cheevos_challenge_mode);
m_ui.actionCPUDebugger->setDisabled(starting || !running || cheevos_challenge_mode);
m_ui.actionCPUDebugger->setDisabled(cheevos_challenge_mode);
m_ui.actionDumpRAM->setDisabled(starting || !running || cheevos_challenge_mode);
m_ui.actionDumpVRAM->setDisabled(starting || !running || cheevos_challenge_mode);
m_ui.actionDumpSPURAM->setDisabled(starting || !running || cheevos_challenge_mode);
@ -2871,19 +2865,19 @@ void MainWindow::onToolsCheatManagerTriggered()
void MainWindow::openCPUDebugger()
{
g_emu_thread->setSystemPaused(true, true);
if (!System::IsValid())
if (m_debugger_window)
{
m_debugger_window->raise();
m_debugger_window->activateWindow();
m_debugger_window->setFocus();
return;
}
Assert(!m_debugger_window);
m_debugger_window = new DebuggerWindow();
m_debugger_window->setWindowIcon(windowIcon());
connect(m_debugger_window, &DebuggerWindow::closed, this, &MainWindow::onCPUDebuggerClosed);
m_debugger_window->show();
// the debugger will miss the pause event above (or we were already paused), so fire it now
m_debugger_window->onEmulationPaused();
}
void MainWindow::onCPUDebuggerClosed()