diff options
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 4 | ||||
-rw-r--r-- | source/blender/editors/render/render_internal.c | 8 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 3 |
3 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index d514a0a7dd0..208f5ea89e3 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2585,7 +2585,9 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **lock_ /* invalidate color managed buffers if render result changed */ BLI_lock_thread(LOCK_COLORMANAGE); - if (ibuf->x != rres.rectx || ibuf->y != rres.recty || ibuf->rect_float != rectf) { + if (ibuf->x != rres.rectx || ibuf->y != rres.recty || + ibuf->rect_float != rectf || ibuf->rect != rect) + { ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID; } diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index c371a9ce945..c08ea2b6429 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -124,8 +124,14 @@ void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volat if (rr->rectf) rectf = rr->rectf; else { - if (rr->rect32) + if (rr->rect32) { + /* special case, currently only happens with sequencer rendering, + * which updates the whole frame, so we can only mark display buffer + * as invalid here (sergey) + */ + ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID; return; + } else { if (rr->renlay == NULL || rr->renlay->rectf == NULL) return; rectf = rr->renlay->rectf; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 0f8e0a6fcd8..e9ff74bd1ac 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1718,6 +1718,9 @@ static void do_render_seq(Render *re) re->progress(re->prh, (float)(cfra - re->r.sfra) / (re->r.efra - re->r.sfra)); else re->progress(re->prh, 1.0f); + + /* would mark display buffers as invalid */ + re->display_draw(re->ddh, re->result, NULL); } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |