[Bf-blender-cvs] [f94e3ba72f8] temp-gpu-image-engine: Fix issue when image user is a nullptr.

Jeroen Bakker noreply at git.blender.org
Fri Nov 26 16:04:12 CET 2021


Commit: f94e3ba72f8bc12c862b8cf8cc986975812f3c54
Author: Jeroen Bakker
Date:   Fri Nov 26 14:47:57 2021 +0100
Branches: temp-gpu-image-engine
https://developer.blender.org/rBf94e3ba72f8bc12c862b8cf8cc986975812f3c54

Fix issue when image user is a nullptr.

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

M	source/blender/blenkernel/BKE_image_partial_update.hh

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

diff --git a/source/blender/blenkernel/BKE_image_partial_update.hh b/source/blender/blenkernel/BKE_image_partial_update.hh
index dfc02fea742..6af44b2c3c9 100644
--- a/source/blender/blenkernel/BKE_image_partial_update.hh
+++ b/source/blender/blenkernel/BKE_image_partial_update.hh
@@ -137,7 +137,7 @@ class AbstractTileData {
  */
 class NoTileData : AbstractTileData {
  public:
-  NoTileData(Image *UNUSED(image), ImageUser &UNUSED(image_user))
+  NoTileData(Image *UNUSED(image), ImageUser *UNUSED(image_user))
   {
   }
 
@@ -166,7 +166,7 @@ class ImageTileData : AbstractTileData {
    * The local copy is required so we don't change the image user of the caller.
    * We need to change it in order to request data for a specific tile.
    */
-  ImageUser image_user;
+  ImageUser image_user = {0};
 
   /**
    * \brief ImageTile associated with the loaded tile.
@@ -181,8 +181,11 @@ class ImageTileData : AbstractTileData {
    */
   ImBuf *tile_buffer = nullptr;
 
-  ImageTileData(Image *image, ImageUser image_user) : image(image), image_user(image_user)
+  ImageTileData(Image *image, ImageUser *image_user) : image(image)
   {
+    if (image_user != nullptr) {
+      this->image_user = *image_user;
+    }
   }
 
   void init_data(TileNumber new_tile_number) override
@@ -229,7 +232,7 @@ template<typename TileData = NoTileData> struct PartialUpdateChecker {
    public:
     CollectResult(PartialUpdateChecker<TileData> *checker, ePartialUpdateCollectResult result_code)
         : checker(checker),
-          tile_data(checker->image, *checker->image_user),
+          tile_data(checker->image, checker->image_user),
           result_code(result_code)
     {
     }



More information about the Bf-blender-cvs mailing list