From 2ad2ea02de2abac0370581bfd87b45e8465c4105 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 13 Feb 2022 19:47:33 +1100 Subject: vegas.cpp: Cleanup: * Combine DUART interrupts. * Disabled SIO logging that had been left on. * Added system LED output and added it to sf0249 layout (hidden by default). --- src/frontend/mame/luaengine_mem.cpp | 81 ++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 33 deletions(-) (limited to 'src/frontend/mame') diff --git a/src/frontend/mame/luaengine_mem.cpp b/src/frontend/mame/luaengine_mem.cpp index 8ad5d6300bb..f22d23b0961 100644 --- a/src/frontend/mame/luaengine_mem.cpp +++ b/src/frontend/mame/luaengine_mem.cpp @@ -238,7 +238,15 @@ public: void remove() { ++m_installing; - m_handler.remove(); + try + { + m_handler.remove(); + } + catch (...) + { + --m_installing; + throw; + } --m_installing; } @@ -249,41 +257,48 @@ private: if (m_installing) return; ++m_installing; - m_handler.remove(); + try + { + m_handler.remove(); - switch (m_mode) + switch (m_mode) + { + case read_or_write::READ: + m_handler = m_space.install_read_tap( + m_start, + m_end, + m_name, + [this] (offs_t offset, T &data, T mem_mask) + { + auto result = m_engine.invoke(m_callback, offset, data, mem_mask).template get >(); + if (result) + data = *result; + }, + &m_handler); + break; + case read_or_write::WRITE: + m_handler = m_space.install_write_tap( + m_start, + m_end, + m_name, + [this] (offs_t offset, T &data, T mem_mask) + { + auto result = m_engine.invoke(m_callback, offset, data, mem_mask).template get >(); + if (result) + data = *result; + }, + &m_handler); + break; + case read_or_write::READWRITE: + // won't ever get here, but compilers complain about unhandled enum value + break; + } + } + catch (...) { - case read_or_write::READ: - m_handler = m_space.install_read_tap( - m_start, - m_end, - m_name, - [this] (offs_t offset, T &data, T mem_mask) - { - auto result = m_engine.invoke(m_callback, offset, data, mem_mask).template get >(); - if (result) - data = *result; - }, - &m_handler); - break; - case read_or_write::WRITE: - m_handler = m_space.install_write_tap( - m_start, - m_end, - m_name, - [this] (offs_t offset, T &data, T mem_mask) - { - auto result = m_engine.invoke(m_callback, offset, data, mem_mask).template get >(); - if (result) - data = *result; - }, - &m_handler); - break; - case read_or_write::READWRITE: - // won't ever get here, but compilers complain about unhandled enum value - break; + --m_installing; + throw; } - --m_installing; }; -- cgit v1.2.3