diff options
Diffstat (limited to 'src/emu/rendlay.cpp')
-rw-r--r-- | src/emu/rendlay.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp index 87b84b8c7f0..a233e24d305 100644 --- a/src/emu/rendlay.cpp +++ b/src/emu/rendlay.cpp @@ -1195,13 +1195,31 @@ render_texture *layout_element::state_texture(int state) { m_elemtex[state].m_element = this; m_elemtex[state].m_state = state; - m_elemtex[state].m_texture = machine().render().texture_alloc(element_scale, &m_elemtex[state]); + m_elemtex[state].m_texture = machine().render().texture_alloc(element_scale, &m_elemtex[state], element_dirty); } return m_elemtex[state].m_texture; } //------------------------------------------------- +// element_dirty - return whether or not any +// given components in the element needs an +// update +//------------------------------------------------- + +bool layout_element::element_dirty(void *dirty_param) +{ + texture* elemtex = (texture *)dirty_param; + + // iterate over components that are part of the current state + for (auto& curcomp : elemtex->m_element->m_complist) + if (curcomp->is_dirty()) + return true; + + return false; +} + +//------------------------------------------------- // element_scale - scale an element by rendering // all the components at the appropriate // resolution @@ -1328,6 +1346,8 @@ public: m_file = std::make_unique<emu_file>(env.machine().options().art_path(), OPEN_FLAG_READ); } + bool is_dirty() const override { return true; } + protected: // overrides virtual void draw(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override |