diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc index 8da3f80a223..822fe1e5f81 100644 --- a/source/blender/depsgraph/intern/depsgraph_build.cc +++ b/source/blender/depsgraph/intern/depsgraph_build.cc @@ -281,15 +281,19 @@ void DEG_graph_tag_relations_update(Depsgraph *graph) DEG_DEBUG_PRINTF(graph, TAG, "%s: Tagging relations for update.\n", __func__); deg::Depsgraph *deg_graph = reinterpret_cast(graph); deg_graph->need_update_relations = true; - /* NOTE: When relations are updated, it's quite possible that - * we've got new bases in the scene. This means, we need to - * re-create flat array of bases in view layer. - * - * TODO(sergey): Try to make it so we don't flush updates - * to the whole depsgraph. */ + + /* NOTE: When relations are updated, it's quite possible that we've got new bases in the scene. + * This means, we need to re-create flat array of bases in view layer. */ + /* TODO(sergey): It is expected that bases manipulation tags scene for update to tag bases array + * for re-creation. Once it is ensured to happen from all places this implicit tag can be + * removed. */ deg::IDNode *id_node = deg_graph->find_id_node(°_graph->scene->id); if (id_node != nullptr) { - id_node->tag_update(deg_graph, deg::DEG_UPDATE_SOURCE_RELATIONS); + graph_id_tag_update(deg_graph->bmain, + deg_graph, + °_graph->scene->id, + ID_RECALC_BASE_FLAGS, + deg::DEG_UPDATE_SOURCE_RELATIONS); } }