From ba1197fe5e27f1cb7be281b3f20166a69050a273 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 7 Nov 2017 16:29:31 +0100 Subject: Depsgraph: Simplify some workarounds and make API closer to final --- source/blender/editors/object/object_add.c | 2 +- source/blender/editors/render/render_preview.c | 6 +----- source/blender/editors/scene/scene_edit.c | 6 +----- source/blender/editors/space_view3d/view3d_draw.c | 3 ++- source/blender/editors/transform/transform_conversions.c | 10 ++++++++-- 5 files changed, 13 insertions(+), 14 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index d527e64e6c5..a761caab29b 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1762,7 +1762,7 @@ static int convert_exec(bContext *C, wmOperator *op) DEG_id_tag_update(&base->object->id, OB_RECALC_DATA); } - Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, sl); + Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, sl, true); uint64_t customdata_mask_prev = scene->customdata_mask; scene->customdata_mask |= CD_MASK_MESH; BKE_scene_graph_update_tagged(bmain->eval_ctx, depsgraph, bmain, scene); diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 9bcc6f49b6f..84c843af020 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -604,11 +604,7 @@ static Scene *preview_prepare_scene(Main *bmain, Scene *scene, ID *id, int id_ty } } - Depsgraph *depsgraph = BKE_scene_get_depsgraph(sce, scene_layer); - /* TODO(sergey): This is a temporary solution. */ - if (depsgraph == NULL) { - sce->depsgraph_legacy = depsgraph = DEG_graph_new(); - } + Depsgraph *depsgraph = BKE_scene_get_depsgraph(sce, scene_layer, true); /* TODO(sergey): Use proper flag for tagging here. */ DEG_graph_id_tag_update(pr_main, depsgraph, &sce->id, 0); DEG_relations_tag_update(pr_main); diff --git a/source/blender/editors/scene/scene_edit.c b/source/blender/editors/scene/scene_edit.c index 3799fed8ac2..4a104a330a4 100644 --- a/source/blender/editors/scene/scene_edit.c +++ b/source/blender/editors/scene/scene_edit.c @@ -124,11 +124,7 @@ void ED_scene_changed_update(Main *bmain, bContext *C, Scene *scene_new, const b * but workspace should remember the last one set. Could store render-layer * per window-workspace combination (using WorkSpaceDataRelation) */ SceneLayer *layer_new = BLI_findlink(&scene_new->render_layers, scene_new->active_layer); - Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene_new, layer_new); - /* TODO(sergey): This is a temporary solution. */ - if (depsgraph == NULL) { - scene_new->depsgraph_legacy = depsgraph = DEG_graph_new(); - } + Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene_new, layer_new, true); CTX_data_scene_set(C, scene_new); BKE_workspace_render_layer_set(CTX_wm_workspace(C), layer_new); diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index ec2dcc75bc0..75d064bbbac 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2057,7 +2057,8 @@ void ED_view3d_draw_offscreen( } else { /* XXX, should take depsgraph as arg */ - Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, scene_layer); + Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, scene_layer, false); + BLI_assert(depsgraph != NULL); DRW_draw_render_loop_offscreen(depsgraph, eval_ctx->engine, ar, v3d, ofs); } diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index b1013140711..ed215a84dc7 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5540,7 +5540,10 @@ static void set_trans_object_base_flags(TransInfo *t) Main *bmain = G.main; SceneLayer *sl = t->scene_layer; Scene *scene = t->scene; - Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, sl); + Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, sl, false); + + /* Transform tool is expected to be executed from an evaluated scene. */ + BLI_assert(depsgraph != NULL); /* * if Base selected and has parent selected: @@ -5641,9 +5644,12 @@ static int count_proportional_objects(TransInfo *t) Main *bmain = G.main; SceneLayer *sl = t->scene_layer; Scene *scene = t->scene; - Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, sl); + Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, sl, false); Base *base; + /* Transform tool is expected to be executed from an evaluated scene. */ + BLI_assert(depsgraph != NULL); + /* rotations around local centers are allowed to propagate, so we take all objects */ if (!((t->around == V3D_AROUND_LOCAL_ORIGINS) && (t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL))) -- cgit v1.2.3