Depsgraph: Don't tag original IDs
This is unreliable for cases when multiple dependency graphs are to be updated. The only reason why it was attempted to be made is to deal with cases when ID appears in the dependency graph for the first time. But even then it should be smart enough bring itself to an up-to-date state without any extra tricks.
This commit is contained in:
@@ -280,7 +280,6 @@ void depsgraph_tag_component(Depsgraph *graph,
|
||||
ComponentNode *cow_comp =
|
||||
id_node->find_component(NodeType::COPY_ON_WRITE);
|
||||
cow_comp->tag_update(graph, update_source);
|
||||
id_node->id_orig->recalc |= ID_RECALC_COPY_ON_WRITE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -758,7 +757,6 @@ static void deg_graph_clear_id_node_func(
|
||||
DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(data_v);
|
||||
DEG::IDNode *id_node = deg_graph->id_nodes[i];
|
||||
id_node->id_cow->recalc &= ~ID_RECALC_ALL;
|
||||
id_node->id_orig->recalc &= ~ID_RECALC_ALL;
|
||||
|
||||
/* Clear embedded node trees too. */
|
||||
bNodeTree *ntree_cow = ntreeFromID(id_node->id_cow);
|
||||
|
||||
@@ -684,7 +684,6 @@ ID *deg_expand_copy_on_write_datablock(const Depsgraph *depsgraph,
|
||||
{
|
||||
const ID *id_orig = id_node->id_orig;
|
||||
ID *id_cow = id_node->id_cow;
|
||||
const int id_cow_recalc = id_cow->recalc;
|
||||
/* No need to expand such datablocks, their copied ID is same as original
|
||||
* one already. */
|
||||
if (!deg_copy_on_write_is_needed(id_orig)) {
|
||||
@@ -761,7 +760,6 @@ ID *deg_expand_copy_on_write_datablock(const Depsgraph *depsgraph,
|
||||
/* Correct or tweak some pointers which are not taken care by foreach
|
||||
* from above. */
|
||||
update_special_pointers(depsgraph, id_orig, id_cow);
|
||||
id_cow->recalc = id_orig->recalc | id_cow_recalc;
|
||||
return id_cow;
|
||||
}
|
||||
|
||||
|
||||
@@ -248,10 +248,6 @@ void flush_editors_id_update(Main *bmain,
|
||||
/* TODO(sergey): Do we need to pass original or evaluated ID here? */
|
||||
ID *id_orig = id_node->id_orig;
|
||||
ID *id_cow = id_node->id_cow;
|
||||
/* Copy tag from original data to CoW storage.
|
||||
* This is because DEG_id_tag_update() sets tags on original
|
||||
* data. */
|
||||
id_cow->recalc |= (id_orig->recalc & ID_RECALC_ALL);
|
||||
/* Gather recalc flags from all changed components. */
|
||||
GHASH_FOREACH_BEGIN(ComponentNode *, comp_node, id_node->components)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user