static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect) { RenderJob *rj = rjv; Image *ima = rj->image; ImBuf *ibuf; void *lock; const char *viewname = RE_GetActiveRenderView(rj->re); /* only update if we are displaying the slot being rendered */ 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; } if (rr == NULL) return; /* update part of render */ render_image_update_pass_and_layer(rj, rr, &rj->iuser); ibuf = BKE_image_acquire_ibuf(ima, &rj->iuser, &lock); if (ibuf) { /* Don't waste time on CPU side color management if * image will be displayed using GLSL. * * Need to update rect if Save Buffers enabled because in * this case GLSL doesn't have original float buffer to * operate with. */ if (rr->do_exr_tile || ibuf->channels == 1 || U.image_draw_method != IMAGE_DRAW_METHOD_GLSL) { image_buffer_rect_update(rj, rr, ibuf, &rj->iuser, renrect, viewname); } /* make jobs timer to send notifier */ *(rj->do_update) = true; } BKE_image_release_ibuf(ima, ibuf, lock); }
static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect) { RenderJob *rj = rjv; Image *ima = rj->image; ImBuf *ibuf; void *lock; /* only update if we are displaying the slot being rendered */ 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 */ render_image_update_pass_and_layer(rj, rr, &rj->iuser); ibuf = BKE_image_acquire_ibuf(ima, &rj->iuser, &lock); if (ibuf) { /* Don't waste time on CPU side color management if * image will be displayed using GLSL. */ if (ibuf->channels == 1 || U.image_draw_method != IMAGE_DRAW_METHOD_GLSL) { image_buffer_rect_update(rj->scene, rr, ibuf, &rj->iuser, renrect); } /* make jobs timer to send notifier */ *(rj->do_update) = TRUE; } BKE_image_release_ibuf(ima, ibuf, lock); }