Fix a crash in ImageVisual in case of an invalid image and changed to render broken...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / image / image-visual.cpp
index 27c91e2..d50cb91 100644 (file)
@@ -471,8 +471,19 @@ void ImageVisual::GetNaturalSize( Vector2& naturalSize )
   else if( mImageUrl.IsValid() && mImageUrl.GetLocation() == VisualUrl::LOCAL )
   {
     ImageDimensions dimensions = Dali::GetClosestImageSize( mImageUrl.GetUrl() );
-    naturalSize.x = dimensions.GetWidth();
-    naturalSize.y = dimensions.GetHeight();
+
+    if( dimensions != ImageDimensions( 0, 0 ) )
+    {
+      naturalSize.x = dimensions.GetWidth();
+      naturalSize.y = dimensions.GetHeight();
+    }
+    else
+    {
+      Image brokenImage = VisualFactoryCache::GetBrokenVisualImage();
+
+      naturalSize.x = brokenImage.GetWidth();
+      naturalSize.y = brokenImage.GetWidth();
+    }
     return;
   }
 
@@ -704,7 +715,6 @@ void ImageVisual::InitializeRenderer( const Image& image )
   // don't reuse CreateTextureSet
   TextureSet textures = TextureSet::New();
 
-  // Renderer can't be shared if mImage is NativeImage
   NativeImage nativeImage = NativeImage::DownCast( image );
   if( nativeImage )
   {
@@ -926,6 +936,10 @@ void ImageVisual::UploadComplete( bool loadingSuccess, TextureSet textureSet, bo
       else
       {
         Image brokenImage = VisualFactoryCache::GetBrokenVisualImage();
+
+        textureSet = TextureSet::New();
+        mImpl->mRenderer.SetTextures( textureSet );
+
         ApplyImageToSampler( brokenImage );
       }
       // Image loaded and ready to display