From 358738c1aa6115aa7ccbd676166f943e4ee1dbd3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 14:28:22 +0000 Subject: Fix #22354, #22727, #22501: image window not display correct renders with compositing and slots. --- source/blender/blenkernel/intern/image.c | 13 ++++++++----- source/blender/render/extern/include/RE_pipeline.h | 4 ++-- source/blender/render/intern/source/pipeline.c | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 4daa38001bf..dc78dac04dd 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1827,10 +1827,13 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **lock_ layer= (iuser)? iuser->layer: 0; pass= (iuser)? iuser->pass: 0; - if(from_render) + if(from_render) { RE_AcquireResultImage(re, &rres); - else if(ima->renders[ima->render_slot]) + } + else if(ima->renders[ima->render_slot]) { rres= *(ima->renders[ima->render_slot]); + rres.have_combined= rres.rectf != NULL; + } else memset(&rres, 0, sizeof(RenderResult)); @@ -1852,10 +1855,10 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **lock_ rectz= rres.rectz; dither= iuser->scene->r.dither_intensity; - /* get compo/seq result by default */ - if(rres.compo_seq && layer==0); + /* combined layer gets added as first layer */ + if(rres.have_combined && layer==0); else if(rres.layers.first) { - RenderLayer *rl= BLI_findlink(&rres.layers, layer-(rres.compo_seq?1:0)); + RenderLayer *rl= BLI_findlink(&rres.layers, layer-(rres.have_combined?1:0)); if(rl) { RenderPass *rpass; diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index b72ba8e0c40..802703d476c 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -130,8 +130,8 @@ typedef struct RenderResult { /* for render results in Image, verify validity for sequences */ int framenr; - /* for acquire image, to indicate if it is compo/seq result */ - int compo_seq; + /* for acquire image, to indicate if it there is a combined layer */ + int have_combined; /* render info text */ char *text; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 722ce55e950..bdae4221bde 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1085,7 +1085,7 @@ void RE_AcquireResultImage(Render *re, RenderResult *rr) rr->rectz= RE_RenderLayerGetPass(rl, SCE_PASS_Z); } - rr->compo_seq= (rr->rectf != NULL); + rr->have_combined= (re->result->rectf != NULL); rr->layers= re->result->layers; } } -- cgit v1.2.3