From 7d17352c2478fd61d87f58e242f4f1b8dbba1ee7 Mon Sep 17 00:00:00 2001 From: jmm Date: Thu, 22 Jun 2023 20:13:28 +0900 Subject: [PATCH] [Tizen] Detach skybox on setting an empty url Change-Id: I8cfc89b802fe625046e98a97e15551de9285ff82 --- .../src/dali-scene3d/utc-Dali-SceneView.cpp | 32 ++++++++++++++++++++++ .../controls/scene-view/scene-view-impl.cpp | 8 ++++++ 2 files changed, 40 insertions(+) diff --git a/automated-tests/src/dali-scene3d/utc-Dali-SceneView.cpp b/automated-tests/src/dali-scene3d/utc-Dali-SceneView.cpp index caaca31..53e7725 100644 --- a/automated-tests/src/dali-scene3d/utc-Dali-SceneView.cpp +++ b/automated-tests/src/dali-scene3d/utc-Dali-SceneView.cpp @@ -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; diff --git a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp index 6f8e800..0a1e5b0 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp @@ -821,6 +821,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; } -- 2.7.4