diff options
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_nodes.cc')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes.cc | 38 |
1 files changed, 10 insertions, 28 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index 7da3ab78575..51582508b6f 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -390,8 +390,6 @@ void DepsgraphNodeBuilder::begin_build() * NOTE: This is split in two, a static function and a public method of the node builder, to allow * the code to access the builder's data more easily. */ -/* `id_cow_self` is the user of `id_pointer`, see also `LibraryIDLinkCallbackData` struct - * definition. */ int DepsgraphNodeBuilder::foreach_id_cow_detect_need_for_update_callback(ID *id_cow_self, ID *id_pointer) { @@ -440,21 +438,18 @@ static int foreach_id_cow_detect_need_for_update_callback(LibraryIDLinkCallbackD return builder->foreach_id_cow_detect_need_for_update_callback(id_cow_self, id); } -/* Check for IDs that need to be flushed (COW-updated) because the depsgraph itself created or - * removed some of their evaluated dependencies. - * - * NOTE: Currently the only ID types that depsgraph may decide to not evaluate/generate COW - * copies for, even though they are referenced by other data-blocks, are Collections and Objects - * (through their various visibility flags, and the ones from LayerCollections too). However, this - * code is kept generic as it makes it more future-proof, and optimization here would give - * negligible performance improvements in typical cases. - * - * NOTE: This mechanism may also 'fix' some missing update tagging from non-depsgraph code in - * some cases. This is slightly unfortunate (as it may hide issues in other parts of Blender - * code), but cannot really be avoided currently. - */ void DepsgraphNodeBuilder::update_invalid_cow_pointers() { + /* NOTE: Currently the only ID types that depsgraph may decide to not evaluate/generate COW + * copies for, even though they are referenced by other data-blocks, are Collections and Objects + * (through their various visibility flags, and the ones from #LayerCollections too). However, + * this code is kept generic as it makes it more future-proof, and optimization here would give + * negligible performance improvements in typical cases. + * + * NOTE: This mechanism may also 'fix' some missing update tagging from non-depsgraph code in + * some cases. This is slightly unfortunate (as it may hide issues in other parts of Blender + * code), but cannot really be avoided currently. */ + for (const IDNode *id_node : graph_->id_nodes) { if (id_node->previously_visible_components_mask == 0) { /* Newly added node/ID, no need to check it. */ @@ -1071,10 +1066,6 @@ void DepsgraphNodeBuilder::build_object_pointcache(Object *object) }); } -/** - * Build graph nodes for AnimData block and any animated images used. - * \param id: ID-Block which hosts the AnimData - */ void DepsgraphNodeBuilder::build_animdata(ID *id) { /* Special handling for animated images/sequences. */ @@ -1128,9 +1119,6 @@ void DepsgraphNodeBuilder::build_animdata_nlastrip_targets(ListBase *strips) } } -/** - * Build graph nodes to update the current frame in image users. - */ void DepsgraphNodeBuilder::build_animation_images(ID *id) { if (BKE_image_user_id_has_animation(id)) { @@ -1152,12 +1140,6 @@ void DepsgraphNodeBuilder::build_action(bAction *action) add_operation_node(&action->id, NodeType::ANIMATION, OperationCode::ANIMATION_EVAL); } -/** - * Build graph node(s) for Driver - * \param id: ID-Block that driver is attached to - * \param fcu: Driver-FCurve - * \param driver_index: Index in animation data drivers list - */ void DepsgraphNodeBuilder::build_driver(ID *id, FCurve *fcurve, int driver_index) { /* Create data node for this driver */ |