Fix T61575: missing Cycles viewport updates when changing settings.
This reverts "Depsgraph: Don't tag original IDs", commit:
5f814cb3b4
.
This commit is contained in:
@@ -280,6 +280,7 @@ 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -765,6 +766,7 @@ 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,6 +684,7 @@ 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)) {
|
||||
@@ -760,6 +761,7 @@ 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,6 +248,10 @@ 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