Fixed a crash that would occur if a new watch were added by entering a watch name.
Code style updates.
This commit is contained in:
parent
7eebbcdca7
commit
4570dd7eeb
|
@ -280,7 +280,7 @@ void Watches::Update(int count, u32 em_address)
|
||||||
m_Watches.at(count).iAddress = em_address;
|
m_Watches.at(count).iAddress = em_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Watches::UpdateName(int count, std::string name)
|
void Watches::UpdateName(int count, const std::string name)
|
||||||
{
|
{
|
||||||
m_Watches.at(count).name = name;
|
m_Watches.at(count).name = name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,7 @@ public:
|
||||||
void Add(const TWatch& bp);
|
void Add(const TWatch& bp);
|
||||||
|
|
||||||
void Update(int count, u32 em_address);
|
void Update(int count, u32 em_address);
|
||||||
void UpdateName(int count, std::string name);
|
void UpdateName(int count, const std::string name);
|
||||||
|
|
||||||
// Remove Breakpoint
|
// Remove Breakpoint
|
||||||
void Remove(u32 _iAddress);
|
void Remove(u32 _iAddress);
|
||||||
|
|
|
@ -867,7 +867,7 @@ void Jit64::EnableBlockLink()
|
||||||
{
|
{
|
||||||
jo.enableBlocklink = true;
|
jo.enableBlocklink = true;
|
||||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockLinking ||
|
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockLinking ||
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU)
|
SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU)
|
||||||
{
|
{
|
||||||
// TODO: support block linking with MMU
|
// TODO: support block linking with MMU
|
||||||
jo.enableBlocklink = false;
|
jo.enableBlocklink = false;
|
||||||
|
|
|
@ -712,7 +712,7 @@ void JitIL::EnableBlockLink()
|
||||||
{
|
{
|
||||||
jo.enableBlocklink = true;
|
jo.enableBlocklink = true;
|
||||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockLinking ||
|
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockLinking ||
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU)
|
SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU)
|
||||||
{
|
{
|
||||||
// TODO: support block linking with MMU
|
// TODO: support block linking with MMU
|
||||||
jo.enableBlocklink = false;
|
jo.enableBlocklink = false;
|
||||||
|
|
|
@ -342,7 +342,7 @@ void CCodeWindow::StepOut()
|
||||||
PowerPC::CoreMode oldMode = PowerPC::GetMode();
|
PowerPC::CoreMode oldMode = PowerPC::GetMode();
|
||||||
PowerPC::SetMode(PowerPC::MODE_INTERPRETER);
|
PowerPC::SetMode(PowerPC::MODE_INTERPRETER);
|
||||||
UGeckoInstruction inst = Memory::Read_Instruction(PC);
|
UGeckoInstruction inst = Memory::Read_Instruction(PC);
|
||||||
GekkoOPInfo *opinfo = GetOpInfo(inst);
|
GekkoOPInfo* opinfo = GetOpInfo(inst);
|
||||||
while (inst.hex != 0x4e800020 && steps < timeout) // check for blr
|
while (inst.hex != 0x4e800020 && steps < timeout) // check for blr
|
||||||
{
|
{
|
||||||
if (inst.LK)
|
if (inst.LK)
|
||||||
|
|
|
@ -58,9 +58,17 @@ static void UpdateWatchAddr(int count, u32 value)
|
||||||
PowerPC::watches.Update(count - 1, value);
|
PowerPC::watches.Update(count - 1, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SetWatchName(int count, std::string value)
|
static void SetWatchName(int count, const std::string value)
|
||||||
{
|
{
|
||||||
PowerPC::watches.UpdateName(count - 1, value);
|
if ((count - 1) < PowerPC::watches.GetWatches().size())
|
||||||
|
{
|
||||||
|
PowerPC::watches.UpdateName(count - 1, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PowerPC::watches.Add(0);
|
||||||
|
PowerPC::watches.UpdateName(PowerPC::watches.GetWatches().size() - 1, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SetWatchValue(int count, u32 value)
|
static void SetWatchValue(int count, u32 value)
|
||||||
|
@ -97,7 +105,7 @@ static wxString GetValueByRowCol(int row, int col)
|
||||||
{
|
{
|
||||||
u32 addr = GetWatchAddr(row);
|
u32 addr = GetWatchAddr(row);
|
||||||
if (Memory::IsRAMAddress(addr))
|
if (Memory::IsRAMAddress(addr))
|
||||||
return Memory::GetString(addr, 32).c_str();
|
return Memory::GetString(addr, 32).c_str();
|
||||||
else
|
else
|
||||||
return wxEmptyString;
|
return wxEmptyString;
|
||||||
}
|
}
|
||||||
|
@ -161,9 +169,9 @@ void CWatchTable::UpdateWatch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGridCellAttr *CWatchTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKind)
|
wxGridCellAttr* CWatchTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKind)
|
||||||
{
|
{
|
||||||
wxGridCellAttr *attr = new wxGridCellAttr();
|
wxGridCellAttr* attr = new wxGridCellAttr();
|
||||||
|
|
||||||
attr->SetBackgroundColour(*wxWHITE);
|
attr->SetBackgroundColour(*wxWHITE);
|
||||||
attr->SetFont(DebuggerFont);
|
attr->SetFont(DebuggerFont);
|
||||||
|
@ -191,10 +199,8 @@ wxGridCellAttr *CWatchTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKin
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool red = false;
|
bool red = false;
|
||||||
switch (col)
|
if (col == 1)
|
||||||
{
|
red = m_CachedWatchHasChanged[row];
|
||||||
case 1: red = m_CachedWatchHasChanged[row]; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
attr->SetTextColour(red ? *wxRED : *wxBLACK);
|
attr->SetTextColour(red ? *wxRED : *wxBLACK);
|
||||||
|
|
||||||
|
@ -208,7 +214,7 @@ wxGridCellAttr *CWatchTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKin
|
||||||
return attr;
|
return attr;
|
||||||
}
|
}
|
||||||
|
|
||||||
CWatchView::CWatchView(wxWindow *parent, wxWindowID id)
|
CWatchView::CWatchView(wxWindow* parent, wxWindowID id)
|
||||||
: wxGrid(parent, id)
|
: wxGrid(parent, id)
|
||||||
{
|
{
|
||||||
SetTable(new CWatchTable(), false);
|
SetTable(new CWatchTable(), false);
|
||||||
|
@ -269,11 +275,13 @@ void CWatchView::OnPopupMenu(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
case IDM_DELETEWATCH:
|
case IDM_DELETEWATCH:
|
||||||
strNewVal = GetValueByRowCol(m_selectedRow, 1);
|
strNewVal = GetValueByRowCol(m_selectedRow, 1);
|
||||||
TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress);
|
if (TryParse("0x" + WxStrToStr(strNewVal), &m_selectedAddress))
|
||||||
PowerPC::watches.Remove(m_selectedAddress);
|
{
|
||||||
if (watch_window)
|
PowerPC::watches.Remove(m_selectedAddress);
|
||||||
watch_window->NotifyUpdate();
|
if (watch_window)
|
||||||
Refresh();
|
watch_window->NotifyUpdate();
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case IDM_ADDMEMCHECK:
|
case IDM_ADDMEMCHECK:
|
||||||
MemCheck.StartAddress = m_selectedAddress;
|
MemCheck.StartAddress = m_selectedAddress;
|
||||||
|
|
|
@ -30,8 +30,8 @@ public:
|
||||||
int GetNumberCols() override { return 5; }
|
int GetNumberCols() override { return 5; }
|
||||||
int GetNumberRows() override { return MAX_SPECIALS; }
|
int GetNumberRows() override { return MAX_SPECIALS; }
|
||||||
wxString GetValue(int row, int col) override;
|
wxString GetValue(int row, int col) override;
|
||||||
void SetValue(int row, int col, const wxString &) override;
|
void SetValue(int row, int col, const wxString&) override;
|
||||||
wxGridCellAttr *GetAttr(int, int, wxGridCellAttr::wxAttrKind) override;
|
wxGridCellAttr* GetAttr(int, int, wxGridCellAttr::wxAttrKind) override;
|
||||||
void UpdateWatch();
|
void UpdateWatch();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -21,11 +21,11 @@ class CWatchWindow
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CWatchWindow(wxWindow* parent,
|
CWatchWindow(wxWindow* parent,
|
||||||
wxWindowID id = wxID_ANY,
|
wxWindowID id = wxID_ANY,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
|
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
|
||||||
const wxString& name = _("Watch"));
|
const wxString& name = _("Watch"));
|
||||||
~CWatchWindow();
|
~CWatchWindow();
|
||||||
|
|
||||||
void NotifyUpdate();
|
void NotifyUpdate();
|
||||||
|
|
|
@ -661,15 +661,12 @@ void CFrame::BootGame(const std::string& filename)
|
||||||
if (!bootfile.empty())
|
if (!bootfile.empty())
|
||||||
{
|
{
|
||||||
StartGame(bootfile);
|
StartGame(bootfile);
|
||||||
if (UseDebugger)
|
if (UseDebugger && g_pCodeWindow)
|
||||||
{
|
{
|
||||||
if (g_pCodeWindow)
|
if (g_pCodeWindow->m_WatchWindow)
|
||||||
{
|
g_pCodeWindow->m_WatchWindow->LoadAll();
|
||||||
if (g_pCodeWindow->m_WatchWindow)
|
if (g_pCodeWindow->m_BreakpointWindow)
|
||||||
g_pCodeWindow->m_WatchWindow->LoadAll();
|
g_pCodeWindow->m_BreakpointWindow->LoadAll();
|
||||||
if (g_pCodeWindow->m_BreakpointWindow)
|
|
||||||
g_pCodeWindow->m_BreakpointWindow->LoadAll();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1178,25 +1175,22 @@ void CFrame::DoStop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UseDebugger)
|
if (UseDebugger && g_pCodeWindow)
|
||||||
{
|
{
|
||||||
if (g_pCodeWindow)
|
if (g_pCodeWindow->m_WatchWindow)
|
||||||
{
|
{
|
||||||
if (g_pCodeWindow->m_WatchWindow)
|
g_pCodeWindow->m_WatchWindow->SaveAll();
|
||||||
{
|
PowerPC::watches.Clear();
|
||||||
g_pCodeWindow->m_WatchWindow->SaveAll();
|
|
||||||
PowerPC::watches.Clear();
|
|
||||||
}
|
|
||||||
if (g_pCodeWindow->m_BreakpointWindow)
|
|
||||||
{
|
|
||||||
g_pCodeWindow->m_BreakpointWindow->SaveAll();
|
|
||||||
PowerPC::breakpoints.Clear();
|
|
||||||
PowerPC::memchecks.Clear();
|
|
||||||
g_pCodeWindow->m_BreakpointWindow->NotifyUpdate();
|
|
||||||
}
|
|
||||||
g_symbolDB.Clear();
|
|
||||||
Host_NotifyMapLoaded();
|
|
||||||
}
|
}
|
||||||
|
if (g_pCodeWindow->m_BreakpointWindow)
|
||||||
|
{
|
||||||
|
g_pCodeWindow->m_BreakpointWindow->SaveAll();
|
||||||
|
PowerPC::breakpoints.Clear();
|
||||||
|
PowerPC::memchecks.Clear();
|
||||||
|
g_pCodeWindow->m_BreakpointWindow->NotifyUpdate();
|
||||||
|
}
|
||||||
|
g_symbolDB.Clear();
|
||||||
|
Host_NotifyMapLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Show the author/description dialog here
|
// TODO: Show the author/description dialog here
|
||||||
|
|
Loading…
Reference in New Issue