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>2017-11-28 18:42:58 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-11-28 18:47:03 +0300
commit701ebb0a64c67ab6190b8c02040e8de25e47ed8c (patch)
tree4b303974d13fad2caaaeaeb298b6d5d2ec4a0d8f /source/blender/editors/render
parente183372f901d57795ce22d6c81cc231ec6739ec2 (diff)
Draw manager: Pass explicit context to DEG scene update callback
This way it is more clear what is needed to be passed and what is available in the callback itself. Thanks Dalai for review and tips about engine type!
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r--source/blender/editors/render/render_update.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c
index 311e1dbe589..bd2acb1c8bd 100644
--- a/source/blender/editors/render/render_update.c
+++ b/source/blender/editors/render/render_update.c
@@ -86,6 +86,7 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update
* updates if there was any change. context is set to the 3d view */
Main *bmain = update_ctx->bmain;
Scene *scene = update_ctx->scene;
+ ViewLayer *view_layer = update_ctx->view_layer;
bContext *C;
wmWindowManager *wm;
wmWindow *win;
@@ -127,15 +128,11 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update
continue;
for (ar = sa->regionbase.first; ar; ar = ar->next) {
- RegionView3D *rv3d;
- RenderEngine *engine;
-
- if (ar->regiontype != RGN_TYPE_WINDOW)
+ if (ar->regiontype != RGN_TYPE_WINDOW) {
continue;
-
- rv3d = ar->regiondata;
- engine = rv3d->render_engine;
-
+ }
+ RegionView3D *rv3d = ar->regiondata;
+ RenderEngine *engine = rv3d->render_engine;
/* call update if the scene changed, or if the render engine
* tagged itself for update (e.g. because it was busy at the
* time of the last update) */
@@ -149,13 +146,20 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update
engine->type->view_update(engine, C);
}
- else if ((RE_engines_find(view_render->engine_id)->flag & RE_USE_LEGACY_PIPELINE) == 0) {
- if (updated) {
- CTX_wm_screen_set(C, sc);
- CTX_wm_area_set(C, sa);
- CTX_wm_region_set(C, ar);
-
- DRW_notify_view_update(C);
+ else {
+ RenderEngineType *engine_type = RE_engines_find(view_render->engine_id);
+ if ((engine_type->flag & RE_USE_LEGACY_PIPELINE) == 0) {
+ if (updated) {
+ DRW_notify_view_update(
+ (&(DRWUpdateContext){
+ .bmain = bmain,
+ .scene = scene,
+ .view_layer = view_layer,
+ .ar = ar,
+ .v3d = (View3D *)sa->spacedata.first,
+ .engine_type = engine_type
+ }));
+ }
}
}
}