Commit: ba1197fe5e27f1cb7be281b3f20166a69050a273
Author: Sergey Sharybin
Date:   Tue Nov 7 16:29:31 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBba1197fe5e27f1cb7be281b3f20166a69050a273

Depsgraph: Simplify some workarounds and make API closer to final

===================================================================

M       source/blender/blenkernel/BKE_scene.h
M       source/blender/blenkernel/intern/context.c
M       source/blender/blenkernel/intern/scene.c
M       source/blender/blenkernel/intern/sequencer.c
M       source/blender/depsgraph/intern/depsgraph_build.cc
M       source/blender/depsgraph/intern/depsgraph_eval.cc
M       source/blender/depsgraph/intern/depsgraph_tag.cc
M       source/blender/editors/object/object_add.c
M       source/blender/editors/render/render_preview.c
M       source/blender/editors/scene/scene_edit.c
M       source/blender/editors/space_view3d/view3d_draw.c
M       source/blender/editors/transform/transform_conversions.c
M       source/blender/makesrna/intern/rna_layer.c
M       source/blender/makesrna/intern/rna_scene_api.c
M       source/blender/render/intern/source/pipeline.c
M       source/creator/creator_args.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_scene.h 
b/source/blender/blenkernel/BKE_scene.h
index a27e743763d..3b550bd845d 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -230,7 +230,7 @@ void BKE_scene_allocate_depsgraph_hash(struct Scene *scene);
 void BKE_scene_ensure_depsgraph_hash(struct Scene *scene);
 void BKE_scene_free_depsgraph_hash(struct Scene *scene);
 
-struct Depsgraph *BKE_scene_get_depsgraph(struct Scene *scene, struct 
SceneLayer *scene_layer);
+struct Depsgraph *BKE_scene_get_depsgraph(struct Scene *scene, struct 
SceneLayer *scene_layer, bool allocate);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/blenkernel/intern/context.c 
b/source/blender/blenkernel/intern/context.c
index 00ad060dd1c..0bd79a50673 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -1260,7 +1260,7 @@ Depsgraph *CTX_data_depsgraph(const bContext *C)
 {
        Scene *scene = CTX_data_scene(C);
        SceneLayer *scene_layer = CTX_data_scene_layer(C);
-       return BKE_scene_get_depsgraph(scene, scene_layer);
+       return BKE_scene_get_depsgraph(scene, scene_layer, true);
 }
 
 void CTX_data_eval_ctx(const bContext *C, EvaluationContext *eval_ctx)
diff --git a/source/blender/blenkernel/intern/scene.c 
b/source/blender/blenkernel/intern/scene.c
index 9583719dca9..4b2e7eff866 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -2453,8 +2453,14 @@ void BKE_scene_free_depsgraph_hash(Scene *scene)
 
 /* Query depsgraph for a specific contexts. */
 
-Depsgraph *BKE_scene_get_depsgraph(Scene *scene, SceneLayer *scene_layer)
+Depsgraph *BKE_scene_get_depsgraph(Scene *scene,
+                                   SceneLayer *scene_layer,
+                                   bool allocate)
 {
        (void) scene_layer;
-       return scene->depsgraph_legacy;
+       Depsgraph *depsgraph = scene->depsgraph_legacy;
+       if (depsgraph == NULL && allocate) {
+               scene->depsgraph_legacy = depsgraph = DEG_graph_new();
+       }
+       return depsgraph;
 }
diff --git a/source/blender/blenkernel/intern/sequencer.c 
b/source/blender/blenkernel/intern/sequencer.c
index 9026baee183..11c3a5658e8 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3264,11 +3264,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData 
*context, Sequence *seq
 
        /* Get depsgraph and scene layer for the strip. */
        SceneLayer *scene_layer = BKE_scene_layer_from_scene_get(scene);
-       Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, scene_layer);
-       /* TODO(sergey): This is a temporary solution. */
-       if (depsgraph == NULL) {
-               scene->depsgraph_legacy = depsgraph = DEG_graph_new();
-       }
+       Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, scene_layer, 
true);
 
        orig_data.scemode = scene->r.scemode;
        orig_data.cfra = scene->r.cfra;
diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc 
b/source/blender/depsgraph/intern/depsgraph_build.cc
index e58a5707bc9..b6bf6c6fa78 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build.cc
@@ -275,7 +275,10 @@ void DEG_relations_tag_update(Main *bmain)
        DEG_DEBUG_PRINTF("%s: Tagging relations for update.\n", __func__);
        LINKLIST_FOREACH(Scene *, scene, &bmain->scene) {
                LINKLIST_FOREACH(SceneLayer *, scene_layer, 
&scene->render_layers) {
-                       Depsgraph *depsgraph = (Depsgraph 
*)BKE_scene_get_depsgraph(scene, scene_layer);
+                       Depsgraph *depsgraph =
+                               (Depsgraph *)BKE_scene_get_depsgraph(scene,
+                                                                    
scene_layer,
+                                                                    false);
                        if (depsgraph != NULL) {
                                DEG_graph_tag_relations_update(depsgraph);
                        }
diff --git a/source/blender/depsgraph/intern/depsgraph_eval.cc 
b/source/blender/depsgraph/intern/depsgraph_eval.cc
index 820be5179b5..6dbbba0391b 100644
--- a/source/blender/depsgraph/intern/depsgraph_eval.cc
+++ b/source/blender/depsgraph/intern/depsgraph_eval.cc
@@ -85,7 +85,7 @@ void DEG_evaluation_context_init_from_scene(EvaluationContext 
*eval_ctx,
                                             eEvaluationMode mode)
 {
        DEG_evaluation_context_init(eval_ctx, mode);
-       eval_ctx->depsgraph = BKE_scene_get_depsgraph(scene, scene_layer);
+       eval_ctx->depsgraph = BKE_scene_get_depsgraph(scene, scene_layer, 
false);
        eval_ctx->scene_layer = scene_layer;
        eval_ctx->engine = engine;
        eval_ctx->ctime = BKE_scene_frame_get(scene);
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc 
b/source/blender/depsgraph/intern/depsgraph_tag.cc
index 13f1506eadb..39505d256ec 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -353,7 +353,10 @@ void deg_id_tag_update(Main *bmain, ID *id, int flag)
        lib_id_recalc_tag_flag(bmain, id, flag);
        LINKLIST_FOREACH(Scene *, scene, &bmain->scene) {
                LINKLIST_FOREACH(SceneLayer *, scene_layer, 
&scene->render_layers) {
-                       Depsgraph *depsgraph = (Depsgraph 
*)BKE_scene_get_depsgraph(scene, scene_layer);
+                       Depsgraph *depsgraph =
+                               (Depsgraph *)BKE_scene_get_depsgraph(scene,
+                                                                    
scene_layer,
+                                                                    false);
                        if (depsgraph != NULL) {
                                deg_graph_id_tag_update(bmain, depsgraph, id, 
flag);
                        }
@@ -461,7 +464,10 @@ void DEG_on_visible_update(Main *bmain, const bool 
UNUSED(do_time))
 {
        LINKLIST_FOREACH(Scene *, scene, &bmain->scene) {
                LINKLIST_FOREACH(SceneLayer *, scene_layer, 
&scene->render_layers) {
-                       Depsgraph *depsgraph = (Depsgraph 
*)BKE_scene_get_depsgraph(scene, scene_layer);
+                       Depsgraph *depsgraph =
+                               (Depsgraph *)BKE_scene_get_depsgraph(scene,
+                                                                    
scene_layer,
+                                                                    false);
                        if (depsgraph != NULL) {
                                DEG_graph_on_visible_update(bmain, depsgraph);
                        }
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

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to