[Tizen] Add log if destroyed visual get some signal 65/298765/1
authorEunki Hong <eunkiki.hong@samsung.com>
Tue, 12 Sep 2023 15:53:42 +0000 (00:53 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Wed, 13 Sep 2023 01:28:39 +0000 (10:28 +0900)
Change-Id: If9e40cc802fc8032e7b4bfa7df38f75a9fceed33
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp
dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/svg/svg-visual.cpp
dali-toolkit/internal/visuals/visual-base-impl.cpp

index 8da0313..c7bffb6 100644 (file)
@@ -625,6 +625,12 @@ void AnimatedVectorImageVisual::OnResourceReady(VectorAnimationTask::ResourceSta
 
 void AnimatedVectorImageVisual::OnAnimationFinished()
 {
+  if(DALI_UNLIKELY(mImpl == nullptr))
+  {
+    DALI_LOG_ERROR("Fatal error!! already destroyed object callback called! AnimatedVectorImageVisual : %p, url : %s\n", this, mUrl.GetUrl().c_str());
+    return;
+  }
+
   DALI_LOG_INFO(gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnAnimationFinished: action state = %d [%p]\n", mPlayState, this);
 
   if(mPlayState != DevelImageVisual::PlayState::STOPPED)
@@ -647,6 +653,12 @@ void AnimatedVectorImageVisual::OnAnimationFinished()
 
 void AnimatedVectorImageVisual::SendAnimationData()
 {
+  if(DALI_UNLIKELY(mImpl == nullptr))
+  {
+    DALI_LOG_ERROR("Fatal error!! already destroyed object callback called! AnimatedVectorImageVisual : %p, url : %s\n", this, mUrl.GetUrl().c_str());
+    return;
+  }
+
   if(mAnimationData.resendFlag)
   {
     mVectorAnimationTask->SetAnimationData(mAnimationData);
index 49635e4..2d14298 100644 (file)
@@ -1029,6 +1029,11 @@ void ImageVisual::FastLoadComplete(FastTrackLoadingTaskPtr task)
 void ImageVisual::LoadComplete(bool loadingSuccess, TextureInformation textureInformation)
 {
   Toolkit::Visual::ResourceStatus resourceStatus;
+  if(DALI_UNLIKELY(mImpl == nullptr))
+  {
+    DALI_LOG_ERROR("Fatal error!! already destroyed object callback called! ImageVisual : %p, url : %s\n", this, mImageUrl.GetUrl().c_str());
+    return;
+  }
   if(mImpl->mRenderer)
   {
     if(textureInformation.useAtlasing)
index 8f9919d..724c18d 100644 (file)
@@ -336,6 +336,11 @@ void SvgVisual::AddRasterizationTask(const Vector2& size)
 
 void SvgVisual::ApplyRasterizedImage(SvgTaskPtr task)
 {
+  if(DALI_UNLIKELY(mImpl == nullptr))
+  {
+    DALI_LOG_ERROR("Fatal error!! already destroyed object callback called! SvgVisual : %p, url : %s, task : %p\n", this, mImageUrl.GetUrl().c_str(), task.Get());
+    return;
+  }
   if(task->HasSucceeded())
   {
     PixelData rasterizedPixelData = task->GetPixelData();
index b4c7fc9..ddaca8c 100644 (file)
@@ -127,6 +127,7 @@ Visual::Base::Base(VisualFactoryCache& factoryCache, FittingMode fittingMode, To
 Visual::Base::~Base()
 {
   delete mImpl;
+  mImpl = nullptr;
 }
 
 void Visual::Base::Initialize()