[Bf-blender-cvs] [2aebfa8b4b2] cycles_texture_cache: Fix T87982: crash switching render slots while render is in progress

Brecht Van Lommel noreply at git.blender.org
Thu May 6 11:25:39 CEST 2021


Commit: 2aebfa8b4b210b210f2b59a0eb38f7b8ba356f9d
Author: Brecht Van Lommel
Date:   Mon May 3 19:09:08 2021 +0200
Branches: cycles_texture_cache
https://developer.blender.org/rB2aebfa8b4b210b210f2b59a0eb38f7b8ba356f9d

Fix T87982: crash switching render slots while render is in progress

===================================================================

M	source/blender/editors/render/render_internal.c

===================================================================

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;
   }



More information about the Bf-blender-cvs mailing list