summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/debug/dvdisasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/debug/dvdisasm.cpp')
-rw-r--r--src/emu/debug/dvdisasm.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp
index a08d500e92f..ab24206ff90 100644
--- a/src/emu/debug/dvdisasm.cpp
+++ b/src/emu/debug/dvdisasm.cpp
@@ -230,6 +230,7 @@ void debug_view_disasm::generate_from_address(debug_disasm_buffer &buffer, offs_
m_dasm.emplace_back(address, size, dasm);
address = next_address;
}
+ m_recompute = false;
}
bool debug_view_disasm::generate_with_pc(debug_disasm_buffer &buffer, offs_t pc)
@@ -247,6 +248,7 @@ bool debug_view_disasm::generate_with_pc(debug_disasm_buffer &buffer, offs_t pc)
backwards_offset = 64 << shift;
m_dasm.clear();
+ m_recompute = false;
offs_t address = (pc - m_backwards_steps*backwards_offset) & source.m_space.logaddrmask();
// Handle wrap at 0
if(address > pc)
@@ -321,7 +323,7 @@ void debug_view_disasm::generate_dasm(debug_disasm_buffer &buffer, offs_t pc)
return;
}
- if(address_position(pc) != -1) {
+ if(!m_recompute && address_position(pc) != -1) {
generate_from_address(buffer, m_dasm[0].m_address);
int pos = address_position(pc);
if(pos != -1) {
@@ -510,7 +512,7 @@ void debug_view_disasm::set_right_column(disasm_right_column contents)
{
begin_update();
m_right_column = contents;
- m_recompute = m_update_pending = true;
+ m_update_pending = true;
end_update();
}
@@ -567,7 +569,7 @@ void debug_view_disasm::set_selected_address(offs_t address)
void debug_view_disasm::set_source(const debug_view_source &source)
{
if(&source != m_source) {
+ m_recompute = true;
debug_view::set_source(source);
- m_dasm.clear();
}
}