summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/rendlay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/rendlay.cpp')
-rw-r--r--src/emu/rendlay.cpp22
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