diff options
author | 2021-11-06 13:46:10 +0100 | |
---|---|---|
committer | 2021-11-06 08:46:10 -0400 | |
commit | b0ac175b4942e4b29098823773ff2d50b6ac35a9 (patch) | |
tree | 240028f17e92bb0c788230e7fbfcb47cb9961fa7 | |
parent | 2b025ea08da0ee9f2ba0c62e782f89f6b2633654 (diff) |
-svg_renderer: Flag when output contents have not changed. [Ryan Holtz] (#8791)
-rw-r--r-- | src/emu/screen.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
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<u32> m_background; + bool m_has_changed_since_last_update; std::vector<cached_bitmap> 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; } //************************************************************************** |