Changed NPatchRenderer and ImageRenderer to use an "broken image" if they try to...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / image / image-renderer.cpp
index 0fad543..8f02d85 100644 (file)
@@ -401,7 +401,10 @@ void ImageRenderer::DoSetOnStage( Actor& actor )
 {
   if( !mImageUrl.empty() && !mImage )
   {
-    mImage = Dali::ResourceImage::New( mImageUrl, mDesiredSize, mFittingMode, mSamplingMode );
+    Dali::ResourceImage resourceImage = Dali::ResourceImage::New( mImageUrl, mDesiredSize, mFittingMode, mSamplingMode );
+    resourceImage.LoadingFinishedSignal().Connect( this, &ImageRenderer::OnImageLoaded );
+
+    mImage = resourceImage;
   }
 
   ApplyImageToSampler();
@@ -529,7 +532,10 @@ void ImageRenderer::SetImage( const std::string& imageUrl, int desiredWidth, int
 
     if( !mImageUrl.empty() && mImpl->mIsOnStage )
     {
-      mImage = Dali::ResourceImage::New( mImageUrl, mDesiredSize, mFittingMode, mSamplingMode );
+      Dali::ResourceImage resourceImage = Dali::ResourceImage::New( mImageUrl, mDesiredSize, mFittingMode, mSamplingMode );
+      resourceImage.LoadingFinishedSignal().Connect( this, &ImageRenderer::OnImageLoaded );
+      mImage = resourceImage;
+
       ApplyImageToSampler();
     }
     else
@@ -580,6 +586,18 @@ void ImageRenderer::ApplyImageToSampler()
   }
 }
 
+void ImageRenderer::OnImageLoaded( ResourceImage image )
+{
+  if( image.GetLoadingState() == Dali::ResourceLoadingFailed )
+  {
+    mImage = RendererFactory::GetBrokenRendererImage();
+    if( mImpl->mIsOnStage )
+    {
+      ApplyImageToSampler();
+    }
+  }
+}
+
 } // namespace Internal
 
 } // namespace Toolkit