Fix #22354, #22727, #22501: image window not display correct

renders with compositing and slots.
This commit is contained in:
Brecht Van Lommel
2010-07-07 14:28:22 +00:00
parent 8476d5a2b3
commit 358738c1aa
3 changed files with 11 additions and 8 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}
}