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-04-04 18:28:23 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-04-04 18:49:08 +0300
commitdb3c3d133817cd16ce3022ddce01559ed28cb532 (patch)
tree743f8505600cd04ae1328124a3bdbb4d384ea7a8 /source/blender/depsgraph
parentb561707bed0e4a464ffa8f8027fa7869b1544fb4 (diff)
Depsgraph: Fix/workaround crash with animation and drivers and CoW
The issue was caused by component tag forcing CoW component to be run, without actually flushing changes down the road from the CoW operation. In a way, this is what we want: we do want CoW to run on changes, but we don't want tiny change forcing full datablock update. This commit makes it so order of updates is all correct, but the bigger issue is still open: what parts of datablock CoW should be updating? Now it's possible to open spring file and play around.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 96a99eea624..88c62182466 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -2073,18 +2073,18 @@ void DepsgraphRelationBuilder::build_copy_on_write_relations(IDDepsNode *id_node
graph_->add_new_relation(op_cow, op_node, "CoW Dependency");
}
else {
- bool has_same_id_dependency = false;
+ bool has_same_comp_dependency = false;
foreach (DepsRelation *rel, op_node->inlinks) {
if (rel->from->type != DEG_NODE_TYPE_OPERATION) {
continue;
}
OperationDepsNode *op_node_from = (OperationDepsNode *)rel->from;
- if (op_node_from->owner->owner == op_node->owner->owner) {
- has_same_id_dependency = true;
+ if (op_node_from->owner == op_node->owner) {
+ has_same_comp_dependency = true;
break;
}
}
- if (!has_same_id_dependency) {
+ if (!has_same_comp_dependency) {
graph_->add_new_relation(op_cow, op_node, "CoW Dependency");
}
}