diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-03-24 03:03:47 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-03-24 03:03:47 +0300 |
commit | ad976c0dd7c17961020b539d50dfaf9587781d28 (patch) | |
tree | 8c7ccdb692cd27e5388ac14eff6de1581d466e12 /source/blender/blenkernel | |
parent | 51380b9346a5115bbbaf064387509d96bdf21a43 (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')
-rw-r--r-- | source/blender/blenkernel/BKE_image_partial_update.hh | 6 |
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; } }; |