diff options
Diffstat (limited to 'scene/resources/material.cpp')
-rw-r--r-- | scene/resources/material.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index d35c49b266..5752f4cc1a 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -475,13 +475,11 @@ ShaderMaterial::~ShaderMaterial() { ///////////////////////////////// Mutex BaseMaterial3D::material_mutex; -SelfList<BaseMaterial3D>::List *BaseMaterial3D::dirty_materials = nullptr; +SelfList<BaseMaterial3D>::List BaseMaterial3D::dirty_materials; HashMap<BaseMaterial3D::MaterialKey, BaseMaterial3D::ShaderData, BaseMaterial3D::MaterialKey> BaseMaterial3D::shader_map; BaseMaterial3D::ShaderNames *BaseMaterial3D::shader_names = nullptr; void BaseMaterial3D::init_shaders() { - dirty_materials = memnew(SelfList<BaseMaterial3D>::List); - shader_names = memnew(ShaderNames); shader_names->albedo = "albedo"; @@ -568,14 +566,14 @@ HashMap<uint64_t, Ref<StandardMaterial3D>> BaseMaterial3D::materials_for_2d; void BaseMaterial3D::finish_shaders() { materials_for_2d.clear(); - memdelete(dirty_materials); - dirty_materials = nullptr; + dirty_materials.clear(); memdelete(shader_names); + shader_names = nullptr; } void BaseMaterial3D::_update_shader() { - dirty_materials->remove(&element); + dirty_materials.remove(&element); MaterialKey mk = _compute_key(); if (mk == current_key) { @@ -1494,8 +1492,8 @@ void BaseMaterial3D::_update_shader() { void BaseMaterial3D::flush_changes() { MutexLock lock(material_mutex); - while (dirty_materials->first()) { - dirty_materials->first()->self()->_update_shader(); + while (dirty_materials.first()) { + dirty_materials.first()->self()->_update_shader(); } } @@ -1503,7 +1501,7 @@ void BaseMaterial3D::_queue_shader_change() { MutexLock lock(material_mutex); if (_is_initialized() && !element.in_list()) { - dirty_materials->add(&element); + dirty_materials.add(&element); } } |