Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2021-05-03 20:09:08 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-05-03 23:10:26 +0300
commit8ce11c8b663c427a69962a7adbded5c6cfa2082e (patch)
tree5ac696cef31d504f9b9157064cc138e1732890ae /source
parent55bf704427e9d6d791fe225a27072c36f23d9eb9 (diff)
Fix T87982: crash switching render slots while render is in progress
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/render/render_internal.c7
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;
}