Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-05-03 13:41:03 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-03 13:55:01 +0300
commitef94415060dc35be9ea0c2c0cb3b8033c592fde7 (patch)
treefbb3aaa7a7fa26ff620addfbb8afefa75a2b68c9
parent98ac0188ed0f2b0a6f7e401b1e769151509eb36a (diff)
Depsgraph: Fix threading conflict between node animation and shading update
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc15
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 */