diff options
Diffstat (limited to 'source/blender/depsgraph/intern/nodes/deg_node_operation.cc')
-rw-r--r-- | source/blender/depsgraph/intern/nodes/deg_node_operation.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/source/blender/depsgraph/intern/nodes/deg_node_operation.cc b/source/blender/depsgraph/intern/nodes/deg_node_operation.cc index d9af3cbf2a4..ef1882dd715 100644 --- a/source/blender/depsgraph/intern/nodes/deg_node_operation.cc +++ b/source/blender/depsgraph/intern/nodes/deg_node_operation.cc @@ -75,14 +75,23 @@ string OperationDepsNode::full_identifier() const return owner_str + "." + identifier(); } -void OperationDepsNode::tag_update(Depsgraph *graph) +void OperationDepsNode::tag_update(Depsgraph *graph, eDepsTag_Source source) { - if (flag & DEPSOP_FLAG_NEEDS_UPDATE) { - return; + if ((flag & DEPSOP_FLAG_NEEDS_UPDATE) == 0) { + graph->add_entry_tag(this); } /* Tag for update, but also note that this was the source of an update. */ flag |= (DEPSOP_FLAG_NEEDS_UPDATE | DEPSOP_FLAG_DIRECTLY_MODIFIED); - graph->add_entry_tag(this); + switch (source) { + case DEG_UPDATE_SOURCE_TIME: + case DEG_UPDATE_SOURCE_RELATIONS: + case DEG_UPDATE_SOURCE_VISIBILITY: + /* Currently nothing. */ + break; + case DEG_UPDATE_SOURCE_USER_EDIT: + flag |= DEPSOP_FLAG_USER_MODIFIED; + break; + } } void OperationDepsNode::set_as_entry() |