Merge "Detach skybox on setting an empty url" into devel/master
authorJeongmin Lee <j0064423.lee@samsung.com>
Mon, 26 Jun 2023 04:51:53 +0000 (04:51 +0000)
committerGerrit Code Review <gerrit@review>
Mon, 26 Jun 2023 04:51:53 +0000 (04:51 +0000)
automated-tests/src/dali-scene3d/utc-Dali-SceneView.cpp
dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp

index caaca31..53e7725 100644 (file)
@@ -882,6 +882,38 @@ int UtcDaliSceneViewSetSkyboxEmpty(void)
   END_TEST;
 }
 
+int UtcDaliSceneViewSetSkyboxEmpty2(void)
+{
+  ToolkitTestApplication application;
+
+  gResourceReadyCalled    = false;
+  Scene3D::SceneView view = Scene3D::SceneView::New();
+  view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+  view.ResourceReadySignal().Connect(OnResourceReady);
+  application.GetScene().Add(view);
+
+  application.SendNotification();
+  application.Render();
+
+  view.SetSkybox(TEST_EQUIRECTANGULAR_TEXTURE);
+
+  application.SendNotification();
+  application.Render();
+  DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
+  application.SendNotification();
+  application.Render();
+
+  uint32_t childCount = view.GetChildAt(0u).GetChildCount();
+
+  view.SetSkybox("");
+  DALI_TEST_EQUALS(view.GetChildAt(0u).GetChildCount(), childCount - 1, TEST_LOCATION);
+
+  view.Unparent();
+  view.Reset();
+
+  END_TEST;
+}
+
 int UtcDaliSceneViewSetSkyboxEquirectangularEmpty(void)
 {
   ToolkitTestApplication application;
index 9c599c5..5746b93 100644 (file)
@@ -835,6 +835,14 @@ void SceneView::UpdateSkybox(const std::string& skyboxUrl, Scene3D::EnvironmentM
       Dali::AsyncTaskManager::Get().RemoveTask(mSkyboxLoadTask);
       mSkyboxLoadTask.Reset();
     }
+
+    if(mSkybox)
+    {
+        mSkybox.Unparent();
+        mSkybox.Reset();
+        mSkyboxTexture.Reset();
+    }
+
     mSkyboxDirty         = false;
     mSkyboxResourceReady = true;
   }