Fix issue using broken image 91/285591/3
authortscholb <scholb.kim@samsung.com>
Thu, 15 Dec 2022 06:11:53 +0000 (15:11 +0900)
committertscholb <scholb.kim@samsung.com>
Thu, 15 Dec 2022 10:03:32 +0000 (19:03 +0900)
when GetNaturalSize() is called after the image is already loaded,
we can't get proper broken image because mPlacementActor is null.

Change-Id: I9394c4447b46ee442056266e4be7f6c220a3ce4d

dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/image/image-visual.h

index 2fcf2a9..0669ed5 100644 (file)
@@ -525,6 +525,11 @@ void ImageVisual::GetNaturalSize(Vector2& naturalSize)
         {
           imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
         }
+        else
+        {
+          imageSize = mPlacementActorSize;
+        }
+
         mFactoryCache.UpdateBrokenImageRenderer(mImpl->mRenderer, imageSize);
         Texture brokenImage = mImpl->mRenderer.GetTextures().GetTexture(0);
         naturalSize.x       = brokenImage.GetWidth();
@@ -757,8 +762,10 @@ void ImageVisual::DoSetOnScene(Actor& actor)
     Vector2 imageSize = Vector2::ZERO;
     if(actor)
     {
-      imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
+      imageSize  = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
+      mPlacementActorSize = imageSize;
     }
+
     mFactoryCache.UpdateBrokenImageRenderer(mImpl->mRenderer, imageSize);
     actor.AddRenderer(mImpl->mRenderer);
     mPlacementActor.Reset();
@@ -905,8 +912,14 @@ void ImageVisual::LoadComplete(bool loadingSuccess, TextureInformation textureIn
       Vector2 imageSize = Vector2::ZERO;
       if(actor)
       {
-        imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
+        imageSize  = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
+        mPlacementActorSize = imageSize;
       }
+      else
+      {
+        imageSize = mPlacementActorSize;
+      }
+
       mFactoryCache.UpdateBrokenImageRenderer(mImpl->mRenderer, imageSize);
       textureInformation.textureSet = mImpl->mRenderer.GetTextures();
     }
index 307ab19..4712f39 100644 (file)
@@ -332,6 +332,7 @@ private:
   TextureManager::TextureId mTextureId;
   TextureSet                mTextures;
   Vector2                   mTextureSize;
+  Vector2                   mPlacementActorSize;
 
   ImageVisualShaderFactory& mImageVisualShaderFactory;