diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-05-03 20:09:08 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-05-03 23:10:26 +0300 |
commit | 8ce11c8b663c427a69962a7adbded5c6cfa2082e (patch) | |
tree | 5ac696cef31d504f9b9157064cc138e1732890ae /source/blender | |
parent | 55bf704427e9d6d791fe225a27072c36f23d9eb9 (diff) |
Fix T87982: crash switching render slots while render is in progress
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/render/render_internal.c | 7 |
1 files changed, 5 insertions, 2 deletions
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; } |