Qt: Mutate breakpoints on CPU thread
This commit is contained in:
parent
eeef0a92bb
commit
a63e78d83c
|
@ -553,6 +553,7 @@ void DebuggerWindow::setMemoryViewRegion(Bus::MemoryRegion region)
|
||||||
|
|
||||||
void DebuggerWindow::toggleBreakpoint(VirtualMemoryAddress address)
|
void DebuggerWindow::toggleBreakpoint(VirtualMemoryAddress address)
|
||||||
{
|
{
|
||||||
|
Host::RunOnCPUThread([this, address]() {
|
||||||
const bool new_bp_state = !CPU::HasBreakpointAtAddress(address);
|
const bool new_bp_state = !CPU::HasBreakpointAtAddress(address);
|
||||||
if (new_bp_state)
|
if (new_bp_state)
|
||||||
{
|
{
|
||||||
|
@ -565,14 +566,17 @@ void DebuggerWindow::toggleBreakpoint(VirtualMemoryAddress address)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QtHost::RunOnUIThread([this, address, new_bp_state, bps = CPU::GetBreakpointList()]() {
|
||||||
m_code_model->setBreakpointState(address, new_bp_state);
|
m_code_model->setBreakpointState(address, new_bp_state);
|
||||||
refreshBreakpointList();
|
refreshBreakpointList(bps);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerWindow::clearBreakpoints()
|
void DebuggerWindow::clearBreakpoints()
|
||||||
{
|
{
|
||||||
m_code_model->clearBreakpoints();
|
m_code_model->clearBreakpoints();
|
||||||
CPU::ClearBreakpoints();
|
Host::RunOnCPUThread(&CPU::ClearBreakpoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<VirtualMemoryAddress> DebuggerWindow::getSelectedCodeAddress()
|
std::optional<VirtualMemoryAddress> DebuggerWindow::getSelectedCodeAddress()
|
||||||
|
@ -614,11 +618,15 @@ bool DebuggerWindow::scrollToMemoryAddress(VirtualMemoryAddress address)
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerWindow::refreshBreakpointList()
|
void DebuggerWindow::refreshBreakpointList()
|
||||||
|
{
|
||||||
|
refreshBreakpointList(CPU::GetBreakpointList());
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebuggerWindow::refreshBreakpointList(const CPU::BreakpointList& bps)
|
||||||
{
|
{
|
||||||
while (m_ui.breakpointsWidget->topLevelItemCount() > 0)
|
while (m_ui.breakpointsWidget->topLevelItemCount() > 0)
|
||||||
delete m_ui.breakpointsWidget->takeTopLevelItem(0);
|
delete m_ui.breakpointsWidget->takeTopLevelItem(0);
|
||||||
|
|
||||||
const CPU::BreakpointList bps(CPU::GetBreakpointList());
|
|
||||||
for (const CPU::Breakpoint& bp : bps)
|
for (const CPU::Breakpoint& bp : bps)
|
||||||
{
|
{
|
||||||
QTreeWidgetItem* item = new QTreeWidgetItem();
|
QTreeWidgetItem* item = new QTreeWidgetItem();
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include "ui_debuggerwindow.h"
|
#include "ui_debuggerwindow.h"
|
||||||
|
|
||||||
|
#include "core/cpu_core.h"
|
||||||
#include "core/types.h"
|
#include "core/types.h"
|
||||||
|
|
||||||
#include <QtWidgets/QMainWindow>
|
#include <QtWidgets/QMainWindow>
|
||||||
|
@ -76,6 +77,7 @@ private:
|
||||||
void scrollToCodeAddress(VirtualMemoryAddress address);
|
void scrollToCodeAddress(VirtualMemoryAddress address);
|
||||||
bool scrollToMemoryAddress(VirtualMemoryAddress address);
|
bool scrollToMemoryAddress(VirtualMemoryAddress address);
|
||||||
void refreshBreakpointList();
|
void refreshBreakpointList();
|
||||||
|
void refreshBreakpointList(const CPU::BreakpointList& bps);
|
||||||
|
|
||||||
Ui::DebuggerWindow m_ui;
|
Ui::DebuggerWindow m_ui;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue