Merge "Remove Rasterize task when svg load failed" into devel/master
authorEunki Hong <eunkiki.hong@samsung.com>
Fri, 20 Oct 2023 09:19:34 +0000 (09:19 +0000)
committerGerrit Code Review <gerrit@review>
Fri, 20 Oct 2023 09:19:34 +0000 (09:19 +0000)
dali-toolkit/internal/visuals/svg/svg-visual.cpp

index fd7c3e2..3f280d1 100644 (file)
@@ -339,16 +339,6 @@ void SvgVisual::ApplyRasterizedImage(SvgTaskPtr task)
 {
   SvgVisualPtr self = this; // Keep reference until this API finished
 
-  // We don't need to keep tasks anymore. reset now.
-  if(task == mLoadingTask)
-  {
-    mLoadingTask.Reset();
-  }
-  if(task == mRasterizingTask)
-  {
-    mRasterizingTask.Reset();
-  }
-
   if(task->HasSucceeded())
   {
     PixelData rasterizedPixelData = task->GetPixelData();
@@ -357,6 +347,16 @@ void SvgVisual::ApplyRasterizedImage(SvgTaskPtr task)
       task->GetRenderer().GetDefaultSize(mDefaultWidth, mDefaultHeight);
     }
 
+    // We don't need to keep tasks anymore. reset now.
+    if(task == mLoadingTask)
+    {
+      mLoadingTask.Reset();
+    }
+    if(task == mRasterizingTask)
+    {
+      mRasterizingTask.Reset();
+    }
+
     // Rasterization success
     if(rasterizedPixelData && IsOnScene())
     {
@@ -429,6 +429,19 @@ void SvgVisual::ApplyRasterizedImage(SvgTaskPtr task)
   {
     mLoadFailed = true;
 
+    // Remove rasterizing task if we requested before.
+    if(mRasterizingTask)
+    {
+      Dali::AsyncTaskManager::Get().RemoveTask(mRasterizingTask);
+      mRasterizingTask.Reset();
+    }
+
+    // We don't need to keep tasks anymore. reset now.
+    if(task == mLoadingTask)
+    {
+      mLoadingTask.Reset();
+    }
+
     Actor actor = mPlacementActor.GetHandle();
     if(actor)
     {