diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-09-04 00:59:24 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-09-04 00:59:24 +0400 |
commit | a54dd1155f4e476dda77e4d6bad5c100854b96bc (patch) | |
tree | 6e8b1b1fe93cc10272e0aada23a75e6f1d13cfb7 /source/blender/editors/render/render_internal.c | |
parent | 72cf50ed1eea3708d2de877c0c8a52da72a9449f (diff) |
Fix #36449: switching between render slots during render would leave some tiles
black until the end of the render.
Diffstat (limited to 'source/blender/editors/render/render_internal.c')
-rw-r--r-- | source/blender/editors/render/render_internal.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index b1978c001f3..9d971bd5f3c 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -270,6 +270,7 @@ typedef struct RenderJob { short anim, write_still; Image *image; ImageUser iuser; + bool image_outdated; short *stop; short *do_update; float *progress; @@ -409,9 +410,19 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec void *lock; /* only update if we are displaying the slot being rendered */ - if (ima->render_slot != ima->last_render_slot) + if (ima->render_slot != ima->last_render_slot) { + rj->image_outdated = true; return; + } + else if (rj->image_outdated) { + /* update entire render */ + rj->image_outdated = false; + BKE_image_signal(ima, NULL, IMA_SIGNAL_COLORMANAGE); + *(rj->do_update) = TRUE; + return; + } + /* update part of render */ ibuf = BKE_image_acquire_ibuf(ima, &rj->iuser, &lock); if (ibuf) { image_buffer_rect_update(rj->scene, rr, ibuf, renrect); |