From a856b123ff1798860cdfee1927d5c7452fa87ed3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 26 Feb 2014 17:29:50 +0100 Subject: Fix T38726: missing rendered viewport update when removing render layer. --- source/blender/render/intern/source/pipeline.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index adb8100517d..50fc9df0d36 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -505,7 +505,6 @@ static int check_mode_full_sample(RenderData *rd) void RE_InitState(Render *re, Render *source, RenderData *rd, SceneRenderLayer *srl, int winx, int winy, rcti *disprect) { bool had_freestyle = (re->r.mode & R_EDGE_FRS) != 0; - int prev_actlay = re->r.actlay; re->ok = TRUE; /* maybe flag */ @@ -609,8 +608,16 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, SceneRenderLayer * re->result = NULL; } else if (re->result) { + SceneRenderLayer *actsrl = BLI_findlink(&re->r.layers, re->r.actlay); + RenderLayer *rl; + bool have_layer = false; + + for (rl = re->result->layers.first; rl; rl = rl->next) + if (STREQ(rl->name, actsrl->name)) + have_layer = true; + if (re->result->rectx == re->rectx && re->result->recty == re->recty && - prev_actlay == re->r.actlay) + have_layer) { /* keep render result, this avoids flickering black tiles * when the preview changes */ -- cgit v1.2.3