From 8ce11c8b663c427a69962a7adbded5c6cfa2082e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 3 May 2021 19:09:08 +0200 Subject: Fix T87982: crash switching render slots while render is in progress --- source/blender/editors/render/render_internal.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 0b5a8db0115..0bec509cd7e 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -574,9 +574,12 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec return; } if (rj->image_outdated) { - /* update entire render */ + /* Free all render buffer caches when switching slots, with lock to ensure main + * thread is not drawing the buffer at the same time. */ rj->image_outdated = false; - BKE_image_signal(rj->main, ima, NULL, IMA_SIGNAL_COLORMANAGE); + ibuf = BKE_image_acquire_ibuf(ima, &rj->iuser, &lock); + BKE_image_free_buffers(ima); + BKE_image_release_ibuf(ima, ibuf, lock); *(rj->do_update) = true; return; } -- cgit v1.2.3