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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-06 13:07:27 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-16 20:55:33 +0300
commit34ab90f546f097cada951b2c9ca22bf271996980 (patch)
treeebcdb3d37120ac1d8fb16462b9104badd1800329 /source/blender/makesrna/intern
parent0c495005dd83913864acb510c1d4194a2275dbb0 (diff)
Depsgraph: remove EvaluationContext, pass Depsgraph instead.
The depsgraph was always created within a fixed evaluation context. Passing both risks the depsgraph and evaluation context not matching, and it complicates the Python API where we'd have to expose both which is not so easy to understand. This also removes the global evaluation context in main, which assumed there to be a single active scene and view layer. Differential Revision: https://developer.blender.org/D3152
Diffstat (limited to 'source/blender/makesrna/intern')
-rw-r--r--source/blender/makesrna/intern/rna_main_api.c8
-rw-r--r--source/blender/makesrna/intern/rna_meta.c1
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c25
-rw-r--r--source/blender/makesrna/intern/rna_scene_api.c4
-rw-r--r--source/blender/makesrna/intern/rna_space_api.c19
5 files changed, 20 insertions, 37 deletions
diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c
index 077dac262b6..41970a69c6c 100644
--- a/source/blender/makesrna/intern/rna_main_api.c
+++ b/source/blender/makesrna/intern/rna_main_api.c
@@ -302,14 +302,8 @@ Mesh *rna_Main_meshes_new_from_object(
Main *bmain, ReportList *reports, Depsgraph *depsgraph,
Object *ob, int apply_modifiers, int calc_tessface, int calc_undeformed)
{
- EvaluationContext eval_ctx;
Scene *sce = DEG_get_evaluated_scene(depsgraph);
- DEG_evaluation_context_init(&eval_ctx, DEG_get_mode(depsgraph));
- eval_ctx.ctime = DEG_get_ctime(depsgraph);
- eval_ctx.view_layer = DEG_get_evaluated_view_layer(depsgraph);
- eval_ctx.depsgraph = depsgraph;
-
switch (ob->type) {
case OB_FONT:
case OB_CURVE:
@@ -322,7 +316,7 @@ Mesh *rna_Main_meshes_new_from_object(
return NULL;
}
- return BKE_mesh_new_from_object(&eval_ctx, bmain, sce, ob, apply_modifiers, calc_tessface, calc_undeformed);
+ return BKE_mesh_new_from_object(depsgraph, bmain, sce, ob, apply_modifiers, calc_tessface, calc_undeformed);
}
static Lamp *rna_Main_lamps_new(Main *bmain, const char *name, int type)
diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c
index 8589d819360..124f3a2fbe2 100644
--- a/source/blender/makesrna/intern/rna_meta.c
+++ b/source/blender/makesrna/intern/rna_meta.c
@@ -48,6 +48,7 @@
#include "BKE_mball.h"
#include "BKE_main.h"
+#include "BKE_scene.h"
#include "DEG_depsgraph.h"
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 012545cb5d2..0caffb4867c 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -3144,11 +3144,6 @@ void rna_ShaderNodePointDensity_density_cache(bNode *self,
return;
}
- EvaluationContext eval_ctx;
- DEG_evaluation_context_init_from_depsgraph(&eval_ctx,
- depsgraph,
- DEG_get_mode(depsgraph));
-
/* Make sure there's no cached data. */
BKE_texture_pointdensity_free_data(pd);
RE_point_density_free(pd);
@@ -3177,8 +3172,7 @@ void rna_ShaderNodePointDensity_density_cache(bNode *self,
shader_point_density->cached_resolution = shader_point_density->resolution;
/* Single-threaded sampling of the voxel domain. */
- RE_point_density_cache(&eval_ctx,
- pd);
+ RE_point_density_cache(depsgraph, pd);
}
void rna_ShaderNodePointDensity_density_calc(bNode *self,
@@ -3195,11 +3189,6 @@ void rna_ShaderNodePointDensity_density_calc(bNode *self,
return;
}
- EvaluationContext eval_ctx;
- DEG_evaluation_context_init_from_depsgraph(&eval_ctx,
- depsgraph,
- DEG_get_mode(depsgraph));
-
/* TODO(sergey): Will likely overflow, but how to pass size_t via RNA? */
*length = 4 * resolution * resolution * resolution;
@@ -3208,10 +3197,7 @@ void rna_ShaderNodePointDensity_density_calc(bNode *self,
}
/* Single-threaded sampling of the voxel domain. */
- RE_point_density_sample(&eval_ctx,
- pd,
- resolution,
- *values);
+ RE_point_density_sample(depsgraph, pd, resolution, *values);
/* We're done, time to clean up. */
BKE_texture_pointdensity_free_data(pd);
@@ -3233,12 +3219,7 @@ void rna_ShaderNodePointDensity_density_minmax(bNode *self,
return;
}
- EvaluationContext eval_ctx;
- DEG_evaluation_context_init_from_depsgraph(&eval_ctx,
- depsgraph,
- DEG_get_mode(depsgraph));
-
- RE_point_density_minmax(&eval_ctx, pd, r_min, r_max);
+ RE_point_density_minmax(depsgraph, pd, r_min, r_max);
}
#else
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c
index d2afb43d65e..7887ea49f19 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -163,7 +163,7 @@ static void rna_SceneRender_get_frame_path(RenderData *rd, int frame, int previe
}
static void rna_Scene_ray_cast(
- Scene *scene, ViewLayer *view_layer,
+ Scene *scene, ViewLayer *UNUSED(view_layer),
float origin[3], float direction[3], float ray_dist,
int *r_success, float r_location[3], float r_normal[3], int *r_index,
Object **r_ob, float r_obmat[16])
@@ -171,7 +171,7 @@ static void rna_Scene_ray_cast(
normalize_v3(direction);
SnapObjectContext *sctx = ED_transform_snap_object_context_create(
- G.main, scene, view_layer, 0);
+ G.main, scene, 0);
bool ret = ED_transform_snap_object_project_ray_ex(
sctx,
diff --git a/source/blender/makesrna/intern/rna_space_api.c b/source/blender/makesrna/intern/rna_space_api.c
index 822f5cbb4b6..f1206b7130f 100644
--- a/source/blender/makesrna/intern/rna_space_api.c
+++ b/source/blender/makesrna/intern/rna_space_api.c
@@ -39,20 +39,27 @@
static void rna_RegionView3D_update(ID *id, RegionView3D *rv3d, bContext *C)
{
bScreen *sc = (bScreen *)id;
- EvaluationContext eval_ctx;
ScrArea *sa;
ARegion *ar;
- CTX_data_eval_ctx(C, &eval_ctx);
-
area_region_from_regiondata(sc, rv3d, &sa, &ar);
if (sa && ar && sa->spacetype == SPACE_VIEW3D) {
View3D *v3d = sa->spacedata.first;
- Scene *scene = ED_screen_scene_find(sc, G.main->wm.first);
-
- ED_view3d_update_viewmat(&eval_ctx, scene, v3d, ar, NULL, NULL, NULL);
+ wmWindowManager *wm = CTX_wm_manager(C);
+ wmWindow *win;
+
+ for (win = wm->windows.first; win; win = win->next) {
+ if (WM_window_get_active_screen(win) == sc) {
+ Scene *scene = WM_window_get_active_scene(win);
+ ViewLayer *view_layer = WM_window_get_active_view_layer(win);
+ Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
+
+ ED_view3d_update_viewmat(depsgraph, scene, v3d, ar, NULL, NULL, NULL);
+ break;
+ }
+ }
}
}