X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fsvg%2Fsvg-visual.cpp;h=265c2fe2fe4f3b22adfd4df2324aed912b7a8e57;hb=refs%2Fchanges%2F73%2F290073%2F1;hp=733141aca2e59630c596caa4fc51d4965e280081;hpb=56dec18d27a2ea56f6cead944d34afdaa5b002c6;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index 733141a..265c2fe 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-visual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -81,6 +81,17 @@ SvgVisual::SvgVisual(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& SvgVisual::~SvgVisual() { + if(Stage::IsInstalled()) + { + if(mLoadingTask) + { + Dali::AsyncTaskManager::Get().RemoveTask(mLoadingTask); + } + if(mRasterizingTask) + { + Dali::AsyncTaskManager::Get().RemoveTask(mRasterizingTask); + } + } } void SvgVisual::OnInitialize() @@ -98,6 +109,7 @@ void SvgVisual::OnInitialize() if(IsSynchronousLoadingRequired() && mImageUrl.IsLocalResource()) { mLoadingTask->Process(); + mLoadingTask.Reset(); // We don't need it now } else { @@ -219,10 +231,16 @@ void SvgVisual::DoSetOnScene(Actor& actor) void SvgVisual::DoSetOffScene(Actor& actor) { // Remove loading & rasterizing task - Dali::AsyncTaskManager::Get().RemoveTask(mLoadingTask); - Dali::AsyncTaskManager::Get().RemoveTask(mRasterizingTask); - mLoadingTask.Reset(); - mRasterizingTask.Reset(); + if(mLoadingTask) + { + Dali::AsyncTaskManager::Get().RemoveTask(mLoadingTask); + mLoadingTask.Reset(); + } + if(mRasterizingTask) + { + Dali::AsyncTaskManager::Get().RemoveTask(mRasterizingTask); + mRasterizingTask.Reset(); + } actor.RemoveRenderer(mImpl->mRenderer); mPlacementActor.Reset(); @@ -301,6 +319,7 @@ void SvgVisual::AddRasterizationTask(const Vector2& size) { mRasterizingTask->Process(); ApplyRasterizedImage(mRasterizingTask); + mRasterizingTask.Reset(); // We don't need it now } else {