diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-03 13:41:03 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-03 13:55:01 +0300 |
commit | ef94415060dc35be9ea0c2c0cb3b8033c592fde7 (patch) | |
tree | fbb3aaa7a7fa26ff620addfbb8afefa75a2b68c9 | |
parent | 98ac0188ed0f2b0a6f7e401b1e769151509eb36a (diff) |
Depsgraph: Fix threading conflict between node animation and shading update
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 8eb4d502410..45e05c6f928 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -169,6 +169,16 @@ static bool object_particles_depends_on_time(Object *object) return false; } +static bool check_id_has_anim_component(ID *id) +{ + AnimData *adt = BKE_animdata_from_id(id); + if (adt == NULL) { + return false; + } + return (adt->action != NULL) || + (!BLI_listbase_is_empty(&adt->nla_tracks)); +} + /* **** General purpose functions **** */ DepsgraphRelationBuilder::DepsgraphRelationBuilder(Main *bmain, @@ -1886,6 +1896,11 @@ void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree) DEG_NODE_TYPE_SHADING_PARAMETERS, DEG_OPCODE_MATERIAL_UPDATE); add_relation(shading_parameters_key, shading_update_key, "NTree Shading Parameters"); + + if (check_id_has_anim_component(&ntree->id)) { + ComponentKey animation_key(&ntree->id, DEG_NODE_TYPE_ANIMATION); + add_relation(shading_parameters_key, animation_key, "NTree Shading Parameters"); + } } /* Recursively build graph for material */ |