summaryrefslogtreecommitdiff
path: root/scene/resources
diff options
context:
space:
mode:
authorIgor Kordiukiewicz <igorkordiukiewicz@gmail.com>2022-01-27 18:56:22 +0100
committerIgor Kordiukiewicz <igorkordiukiewicz@gmail.com>2022-02-11 23:32:06 +0100
commit2fe43a3bd80da0fe843010e55519a19ac6112ff2 (patch)
treedc834fb9249bfaa5c87a0beff4837deaf8838e43 /scene/resources
parenta0558b8af84a5e98cf9d44a888db48470e009e09 (diff)
Fix SelfList::remove error when animating Sprite3D
Diffstat (limited to 'scene/resources')
-rw-r--r--scene/resources/material.cpp4
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;
}