diff options
author | Igor Kordiukiewicz <igorkordiukiewicz@gmail.com> | 2022-01-27 18:56:22 +0100 |
---|---|---|
committer | Igor Kordiukiewicz <igorkordiukiewicz@gmail.com> | 2022-02-11 23:32:06 +0100 |
commit | 2fe43a3bd80da0fe843010e55519a19ac6112ff2 (patch) | |
tree | dc834fb9249bfaa5c87a0beff4837deaf8838e43 /scene/resources | |
parent | a0558b8af84a5e98cf9d44a888db48470e009e09 (diff) |
Fix SelfList::remove error when animating Sprite3D
Diffstat (limited to 'scene/resources')
-rw-r--r-- | scene/resources/material.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index f3e5ece1f9..b74f44c52f 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -2215,7 +2215,9 @@ BaseMaterial3D::EmissionOperator BaseMaterial3D::get_emission_operator() const { RID BaseMaterial3D::get_shader_rid() const { MutexLock lock(material_mutex); - ((BaseMaterial3D *)this)->_update_shader(); + if (element.in_list()) { // _is_shader_dirty() would create anoder mutex lock + ((BaseMaterial3D *)this)->_update_shader(); + } ERR_FAIL_COND_V(!shader_map.has(current_key), RID()); return shader_map[current_key].shader; } |