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
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2022-03-24 03:03:47 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-03-24 03:03:47 +0300
commitad976c0dd7c17961020b539d50dfaf9587781d28 (patch)
tree8c7ccdb692cd27e5388ac14eff6de1581d466e12 /source/blender/blenkernel/BKE_image_partial_update.hh
parent51380b9346a5115bbbaf064387509d96bdf21a43 (diff)
Fix missing updates for external render engines rendering tiles
For render image buffers to be acquired, a lock must be provided. Also fixed wrong usage of release, it must always be called regardless if the returned image buffer is NULL.
Diffstat (limited to 'source/blender/blenkernel/BKE_image_partial_update.hh')
-rw-r--r--source/blender/blenkernel/BKE_image_partial_update.hh6
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_image_partial_update.hh b/source/blender/blenkernel/BKE_image_partial_update.hh
index 8cbb8819551..393bf003caa 100644
--- a/source/blender/blenkernel/BKE_image_partial_update.hh
+++ b/source/blender/blenkernel/BKE_image_partial_update.hh
@@ -165,6 +165,7 @@ class ImageTileData : AbstractTileData {
* Can be nullptr when the file doesn't exist or when the tile hasn't been initialized.
*/
ImBuf *tile_buffer = nullptr;
+ void *tile_buffer_lock = nullptr;
ImageTileData(Image *image, ImageUser *image_user) : image(image)
{
@@ -177,14 +178,15 @@ class ImageTileData : AbstractTileData {
{
image_user.tile = new_tile_number;
tile = BKE_image_get_tile(image, new_tile_number);
- tile_buffer = BKE_image_acquire_ibuf(image, &image_user, NULL);
+ tile_buffer = BKE_image_acquire_ibuf(image, &image_user, &tile_buffer_lock);
}
void free_data() override
{
- BKE_image_release_ibuf(image, tile_buffer, nullptr);
+ BKE_image_release_ibuf(image, tile_buffer, tile_buffer_lock);
tile = nullptr;
tile_buffer = nullptr;
+ tile_buffer_lock = nullptr;
}
};