From b0ac175b4942e4b29098823773ff2d50b6ac35a9 Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Sat, 6 Nov 2021 13:46:10 +0100 Subject: [PATCH] -svg_renderer: Flag when output contents have not changed. [Ryan Holtz] (#8791) --- src/emu/screen.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index e3ca74869f9..0241ec0b3e8 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -79,6 +79,7 @@ private: int m_sx, m_sy; double m_scale; std::vector m_background; + bool m_has_changed_since_last_update; std::vector m_cache; @@ -197,6 +198,10 @@ int screen_device::svg_renderer::render(screen_device &screen, bitmap_rgb32 &bit rebuild_cache(); } + if (!m_has_changed_since_last_update) + return UPDATE_HAS_NOT_CHANGED; + m_has_changed_since_last_update = false; + for(unsigned int y = 0; y < m_sy; y++) memcpy(bitmap.raw_pixptr(y, 0), &m_background[y * m_sx], m_sx * 4); @@ -227,6 +232,10 @@ void screen_device::svg_renderer::output_change(const char *outname, s32 value) auto l = m_key_ids.find(outname); if (l == m_key_ids.end()) return; + + if (m_key_state[l->second] != value) + m_has_changed_since_last_update = true; + m_key_state[l->second] = value; } @@ -515,6 +524,8 @@ void screen_device::svg_renderer::rebuild_cache() spos = epos; epos = ckey; } + + m_has_changed_since_last_update = true; } //**************************************************************************