[Tizen] Remove SceneView RenderTask when destroied 41/284541/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Fri, 18 Nov 2022 10:26:17 +0000 (19:26 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Fri, 18 Nov 2022 10:34:23 +0000 (19:34 +0900)
RenderTask created when it Initialized.
But we don't remove RenderTask whereever.

This patch make we sure remove task, so resolve memory leak

Change-Id: I19f31d9edcaa417e7412610889de4b7c0a80feac
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp

index 52fee9c..9c1e373 100644 (file)
@@ -75,6 +75,16 @@ SceneView::~SceneView()
     // Removes the callback from the callback manager in case the control is destroyed before the callback is executed.
     Adaptor::Get().RemoveIdle(mIblLoadedCallback);
   }
+
+  if(Stage::IsInstalled())
+  {
+    if(mRenderTask)
+    {
+      RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+      taskList.RemoveTask(mRenderTask);
+      mRenderTask.Reset();
+    }
+  }
 }
 
 Dali::Scene3D::SceneView SceneView::New()
@@ -173,7 +183,7 @@ void SceneView::SelectCamera(const std::string& name)
   UpdateCamera(GetCamera(name));
 }
 
-void SceneView::RegisterSceneItem(Scene3D::Internal::ImageBasedLightObserver *item)
+void SceneView::RegisterSceneItem(Scene3D::Internal::ImageBasedLightObserveritem)
 {
   if(item)
   {
@@ -182,7 +192,7 @@ void SceneView::RegisterSceneItem(Scene3D::Internal::ImageBasedLightObserver *it
   }
 }
 
-void SceneView::UnregisterSceneItem(Scene3D::Internal::ImageBasedLightObserver *item)
+void SceneView::UnregisterSceneItem(Scene3D::Internal::ImageBasedLightObserveritem)
 {
   if(item)
   {