Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-04-25 16:02:22 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-04-25 17:34:55 +0300
commit29631ff0136a89a0114e097b12d4de87f22e577c (patch)
tree3d9beb02ca14d8a06f1afbdccd754e9b59f16e65 /source/blender/depsgraph/intern/depsgraph_query.cc
parent09da47b67a28aa3dd814b5c7d309d3481b39e77c (diff)
Depsgraph: Ensure we only expand scene datablock on evaluation
Previously it could have happened on every request to evaluated scene or view layer. This commit also removes expansion of view layer and scene from iterator. Iterator is not to be used before depsgraph is evaluated.
Diffstat (limited to 'source/blender/depsgraph/intern/depsgraph_query.cc')
-rw-r--r--source/blender/depsgraph/intern/depsgraph_query.cc14
1 files changed, 1 insertions, 13 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_query.cc b/source/blender/depsgraph/intern/depsgraph_query.cc
index 8f4bf2d082e..fea28736627 100644
--- a/source/blender/depsgraph/intern/depsgraph_query.cc
+++ b/source/blender/depsgraph/intern/depsgraph_query.cc
@@ -110,6 +110,7 @@ Scene *DEG_get_evaluated_scene(const Depsgraph *graph)
* that calleer is OK with just a pointer in case scene is not up[dated
* yet?
*/
+ BLI_assert(DEG::deg_copy_on_write_is_expanded(&scene_cow->id));
return scene_cow;
}
@@ -118,19 +119,6 @@ ViewLayer *DEG_get_evaluated_view_layer(const Depsgraph *graph)
const DEG::Depsgraph *deg_graph =
reinterpret_cast<const DEG::Depsgraph *>(graph);
Scene *scene_cow = DEG_get_evaluated_scene(graph);
- /* We update copy-on-write scene in the following cases:
- * - It was not expanded yet.
- * - It was tagged for update of CoW component.
- * This allows us to have proper view layer pointer.
- */
- if (DEG_depsgraph_use_copy_on_write() &&
- (!DEG::deg_copy_on_write_is_expanded(&scene_cow->id) ||
- scene_cow->id.recalc & ID_RECALC_COPY_ON_WRITE))
- {
- const DEG::IDDepsNode *id_node =
- deg_graph->find_id_node(&deg_graph->scene->id);
- DEG::deg_update_copy_on_write_datablock(deg_graph, id_node);
- }
/* Do name-based lookup. */
/* TODO(sergey): Can this be optimized? */
ViewLayer *view_layer_orig = deg_graph->view_layer;