Fix T95338: missing image editor refresh after render compositing
This was an old issue, but recent image partial update changes made this more likely to happen in some cases. Now ensure that whenever the rendered scene switches the image is updated.
This commit is contained in:
parent
82fc68ed90
commit
b04d42022f
Notes:
blender-bot
2023-02-13 16:22:05 +01:00
Referenced by issue #95338, Render Image for composited scene shows inconsistent results
|
@ -634,6 +634,12 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec
|
|||
static void current_scene_update(void *rjv, Scene *scene)
|
||||
{
|
||||
RenderJob *rj = static_cast<RenderJob *>(rjv);
|
||||
|
||||
if (rj->current_scene != scene) {
|
||||
/* Image must be updated when rendered scene changes. */
|
||||
BKE_image_partial_update_mark_full_update(rj->image);
|
||||
}
|
||||
|
||||
rj->current_scene = scene;
|
||||
rj->iuser.scene = scene;
|
||||
}
|
||||
|
|
|
@ -1122,6 +1122,8 @@ static void do_render_compositor_scenes(Render *re)
|
|||
return;
|
||||
}
|
||||
|
||||
bool changed_scene = false;
|
||||
|
||||
/* now foreach render-result node we do a full render */
|
||||
/* results are stored in a way compositor will find it */
|
||||
GSet *scenes_rendered = BLI_gset_ptr_new(__func__);
|
||||
|
@ -1134,11 +1136,20 @@ static void do_render_compositor_scenes(Render *re)
|
|||
do_render_compositor_scene(re, scene, cfra);
|
||||
BLI_gset_add(scenes_rendered, scene);
|
||||
node->typeinfo->updatefunc(restore_scene->nodetree, node);
|
||||
|
||||
if (scene != re->scene) {
|
||||
changed_scene = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BLI_gset_free(scenes_rendered, NULL);
|
||||
|
||||
if (changed_scene) {
|
||||
/* If rendered another scene, switch back to the current scene with compositing nodes. */
|
||||
re->current_scene_update(re->suh, re->scene);
|
||||
}
|
||||
}
|
||||
|
||||
/* bad call... need to think over proper method still */
|
||||
|
|
Loading…
Reference in New Issue