summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2026-02-16 01:00:49 +0100
committer hap <happppp@users.noreply.github.com>2026-02-16 01:00:58 +0100
commita00dffbfee978c9a3b88e9bd623973185285895e (patch)
tree35b34c0bbc9741cf3cf68b2753b2a8c5ff52bcb2 /src/emu
parentd965942b6e6100a6c29e32442555955e59f449b1 (diff)
emumem_mview: on switch, do nothing if selected slot is same as before
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/emumem_mview.cpp29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/emu/emumem_mview.cpp b/src/emu/emumem_mview.cpp
index 3da4a90ac7d..80226759c4b 100644
--- a/src/emu/emumem_mview.cpp
+++ b/src/emu/emumem_mview.cpp
@@ -444,7 +444,7 @@ void memory_view::memory_view_entry::prepare_map_generic(address_map &map, bool
void memory_view::memory_view_entry::prepare_device_map(address_map &map)
{
// Disable the test for now, some cleanup needed before
- if(0) {
+ if (0) {
// device maps are not supposed to set global parameters
if (map.m_unmapval)
fatalerror("Device maps should not set the unmap value\n");
@@ -521,20 +521,27 @@ void memory_view::refresh_id()
void memory_view::disable()
{
- m_cur_slot = -1;
- m_cur_id = -1;
- refresh_id();
+ if (m_cur_id != -1) {
+ m_cur_slot = -1;
+ m_cur_id = -1;
+ refresh_id();
+ }
}
void memory_view::select(int slot)
{
- auto i = m_entry_mapping.find(slot);
- if (i == m_entry_mapping.end())
- fatalerror("memory_view %s: select of unknown slot %d", m_name, slot);
+ if (slot < 0)
+ fatalerror("memory_view %s: select of unknown slot %d\n", m_name, slot);
- m_cur_slot = slot;
- m_cur_id = i->second;
- refresh_id();
+ if (slot != m_cur_slot) {
+ auto i = m_entry_mapping.find(slot);
+ if (i == m_entry_mapping.end())
+ fatalerror("memory_view %s: select of unknown slot %d\n", m_name, slot);
+
+ m_cur_slot = slot;
+ m_cur_id = i->second;
+ refresh_id();
+ }
}
int memory_view::id_to_slot(int id) const
@@ -548,7 +555,7 @@ int memory_view::id_to_slot(int id) const
void memory_view::initialize_from_address_map(offs_t addrstart, offs_t addrend, const address_space_config &config)
{
if (m_config)
- fatalerror("A memory_view can be present in only one address map.");
+ fatalerror("A memory_view can be present in only one address map.\n");
m_config = &config;
m_addrstart = addrstart;