Fixed missing display buffer invalidation when rendering sequencer animation

This commit is contained in:
Sergey Sharybin 2012-09-18 08:40:53 +00:00
parent 8e641348f9
commit c50c654543
3 changed files with 13 additions and 2 deletions

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

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

@ -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);
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */