From 570e3ee34bf31053131cbf9d1a3c3125d2ae228a Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Tue, 4 Oct 2022 18:27:44 +0900 Subject: [PATCH] Revert "[Tizen] Add Asynchronous loading for Model and SceneView" This reverts commit 7b0b453dd38b28522a390a5e9181a81fb481e486. --- .../internal/controls/model/model-impl.cpp | 86 ++++----------------- dali-scene3d/internal/controls/model/model-impl.h | 15 ---- .../controls/scene-view/scene-view-impl.cpp | 89 ++++++---------------- .../internal/controls/scene-view/scene-view-impl.h | 15 +--- dali-scene3d/public-api/controls/model/model.cpp | 8 +- dali-scene3d/public-api/controls/model/model.h | 1 - 6 files changed, 45 insertions(+), 169 deletions(-) diff --git a/dali-scene3d/internal/controls/model/model-impl.cpp b/dali-scene3d/internal/controls/model/model-impl.cpp index 2f90682..ed5d3bd 100644 --- a/dali-scene3d/internal/controls/model/model-impl.cpp +++ b/dali-scene3d/internal/controls/model/model-impl.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include // INTERNAL INCLUDES @@ -177,8 +176,6 @@ Model::Model(const std::string& modelUrl, const std::string& resourceDirectoryUr mModelUrl(modelUrl), mResourceDirectoryUrl(resourceDirectoryUrl), mModelRoot(), - mModelLoadedCallback(nullptr), - mIblLoadedCallback(nullptr), mNaturalSize(Vector3::ZERO), mModelPivot(AnchorPoint::CENTER), mIblScaleFactor(1.0f), @@ -189,17 +186,6 @@ Model::Model(const std::string& modelUrl, const std::string& resourceDirectoryUr Model::~Model() { - if(mModelLoadedCallback && Adaptor::IsAvailable()) - { - // Removes the callback from the callback manager in case the control is destroyed before the callback is executed. - Adaptor::Get().RemoveIdle(mModelLoadedCallback); - } - - if(mIblLoadedCallback && Adaptor::IsAvailable()) - { - // Removes the callback from the callback manager in case the control is destroyed before the callback is executed. - Adaptor::Get().RemoveIdle(mIblLoadedCallback); - } } Dali::Scene3D::Model Model::New(const std::string& modelUrl, const std::string& resourceDirectoryUrl) @@ -222,16 +208,17 @@ const Actor Model::GetModelRoot() const void Model::SetImageBasedLightSource(const std::string& diffuseUrl, const std::string& specularUrl, float scaleFactor) { - // Request asynchronous model loading - if(!mIblLoadedCallback) + mIBLResourceReady = false; + Texture diffuseTexture = Dali::Scene3D::Loader::LoadCubeMap(diffuseUrl); + Texture specularTexture = Dali::Scene3D::Loader::LoadCubeMap(specularUrl); + SetImageBasedLightTexture(diffuseTexture, specularTexture, scaleFactor); + mIBLResourceReady = true; + + // If Model resource is already ready, then set resource ready. + // If Model resource is still not ready, wait for model resource ready. + if(IsResourceReady()) { - mIBLResourceReady = false; - mDiffuseIblUrl = diffuseUrl; - mSpecularIblUrl = specularUrl; - mIblScaleFactor = scaleFactor; - // The callback manager takes the ownership of the callback object. - mIblLoadedCallback = MakeCallback(this, &Model::OnLoadComplete); - Adaptor::Get().AddIdle(mIblLoadedCallback, false); + SetResourceReady(false); } } @@ -250,6 +237,7 @@ void Model::SetImageBasedLightTexture(Dali::Texture diffuseTexture, Dali::Textur mIblScaleFactor = scaleFactor; UpdateImageBasedLightScaleFactor(); } + } } @@ -308,14 +296,7 @@ void Model::OnSceneConnection(int depth) { if(!mModelRoot) { - // Request asynchronous model loading - if(!mModelLoadedCallback) - { - mModelResourceReady = false; - // The callback manager takes the ownership of the callback object. - mModelLoadedCallback = MakeCallback(this, &Model::OnLoadComplete); - Adaptor::Get().AddIdle(mModelLoadedCallback, false); - } + LoadModel(); } Actor parent = Self().GetParent(); @@ -349,8 +330,7 @@ Vector3 Model::GetNaturalSize() { if(!mModelRoot) { - DALI_LOG_ERROR("Model is still not loaded.\n"); - return Vector3::ZERO; + LoadModel(); } return mNaturalSize; @@ -507,13 +487,10 @@ void Model::LoadModel() Self().SetProperty(Dali::Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); Self().SetProperty(Dali::Actor::Property::ANCHOR_POINT, Vector3(mModelPivot.x, 1.0f - mModelPivot.y, mModelPivot.z)); -} -void Model::LoadImageBasedLight() -{ - Texture diffuseTexture = Dali::Scene3D::Loader::LoadCubeMap(mDiffuseIblUrl); - Texture specularTexture = Dali::Scene3D::Loader::LoadCubeMap(mSpecularIblUrl); - SetImageBasedLightTexture(diffuseTexture, specularTexture, mIblScaleFactor); + mModelResourceReady = true; + + Control::SetResourceReady(false); } void Model::ScaleModel() @@ -610,37 +587,6 @@ void Model::UpdateImageBasedLightScaleFactor() } } -void Model::OnLoadComplete() -{ - // TODO: In this implementation, we cannot know which request occurs this OnLoadComplete Callback. - // Currently it is no problem because the all loading is processed in this method. - - // Prevent to emit unnecessary resource ready signal. - if(IsResourceReady()) - { - return; - } - - if(!mIBLResourceReady) - { - LoadImageBasedLight(); - mIBLResourceReady = true; - mIblLoadedCallback = nullptr; - } - - if(!mModelResourceReady) - { - LoadModel(); - mModelResourceReady = true; - mModelLoadedCallback = nullptr; - } - - if(IsResourceReady()) - { - Control::SetResourceReady(false); - } -} - } // namespace Internal } // namespace Scene3D } // namespace Dali diff --git a/dali-scene3d/internal/controls/model/model-impl.h b/dali-scene3d/internal/controls/model/model-impl.h index 6c254c9..7e97977 100644 --- a/dali-scene3d/internal/controls/model/model-impl.h +++ b/dali-scene3d/internal/controls/model/model-impl.h @@ -145,11 +145,6 @@ private: void LoadModel(); /** - * @brief Loads image based light from file. - */ - void LoadImageBasedLight(); - - /** * @brief Scales the model to fit the control or to return to original size. */ void ScaleModel(); @@ -174,11 +169,6 @@ private: */ void UpdateImageBasedLightScaleFactor(); - /** - * @brief Asynchronously loading finished. - */ - void OnLoadComplete(); - private: std::string mModelUrl; std::string mResourceDirectoryUrl; @@ -187,11 +177,6 @@ private: std::vector> mRenderableActors; WeakHandle mParentSceneView; - CallbackBase* mModelLoadedCallback; - CallbackBase* mIblLoadedCallback; - std::string mDiffuseIblUrl; - std::string mSpecularIblUrl; - Dali::Texture mSpecularTexture; Dali::Texture mDiffuseTexture; Vector3 mNaturalSize; 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 f0d08c2..08afa17 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp @@ -29,7 +29,6 @@ #include #include #include -#include // INTERNAL INCLUDES #include @@ -61,19 +60,11 @@ Property::Index RENDERING_BUFFER = Dali::Toolkit::Control::CONTROL_PROPERTY_END_ } // anonymous namespace SceneView::SceneView() -: Control(ControlBehaviour(CONTROL_BEHAVIOUR_DEFAULT)), - mIblLoadedCallback(nullptr) +: Control(ControlBehaviour(CONTROL_BEHAVIOUR_DEFAULT)) { } -SceneView::~SceneView() -{ - if(mIblLoadedCallback && Adaptor::IsAvailable()) - { - // Removes the callback from the callback manager in case the control is destroyed before the callback is executed. - Adaptor::Get().RemoveIdle(mIblLoadedCallback); - } -} +SceneView::~SceneView() = default; Dali::Scene3D::SceneView SceneView::New() { @@ -197,17 +188,28 @@ void SceneView::UnregisterModel(Scene3D::Model model) void SceneView::SetImageBasedLightSource(const std::string& diffuseUrl, const std::string& specularUrl, float scaleFactor) { - // Request asynchronous model loading - if(!mIblLoadedCallback) + mIBLResourceReady = false; + Texture diffuseTexture = Dali::Scene3D::Loader::LoadCubeMap(diffuseUrl); + if(diffuseTexture) { - mIBLResourceReady = false; - mDiffuseIblUrl = diffuseUrl; - mSpecularIblUrl = specularUrl; - mIblScaleFactor = scaleFactor; - // The callback manager takes the ownership of the callback object. - mIblLoadedCallback = MakeCallback(this, &SceneView::OnLoadComplete); - Adaptor::Get().AddIdle(mIblLoadedCallback, false); + Texture specularTexture = Dali::Scene3D::Loader::LoadCubeMap(specularUrl); + if(specularTexture) + { + mDiffuseTexture = diffuseTexture; + mSpecularTexture = specularTexture; + mIblScaleFactor = scaleFactor; + + for(auto&& model : mModels) + { + if(model) + { + model.SetImageBasedLightTexture(mDiffuseTexture, mSpecularTexture, mIblScaleFactor); + } + } + } } + mIBLResourceReady = true; + Control::SetResourceReady(false); } void SceneView::SetImageBasedLightScaleFactor(float scaleFactor) @@ -410,53 +412,6 @@ void SceneView::UpdateRenderTask() } } -void SceneView::LoadImageBasedLight() -{ - Texture diffuseTexture = Dali::Scene3D::Loader::LoadCubeMap(mDiffuseIblUrl); - Texture specularTexture = Dali::Scene3D::Loader::LoadCubeMap(mSpecularIblUrl); - - if(diffuseTexture) - { - if(specularTexture) - { - mDiffuseTexture = diffuseTexture; - mSpecularTexture = specularTexture; - - for(auto&& model : mModels) - { - if(model) - { - model.SetImageBasedLightTexture(mDiffuseTexture, mSpecularTexture, mIblScaleFactor); - } - } - } - } -} - -void SceneView::OnLoadComplete() -{ - // TODO: In this implementation, we cannot know which request occurs this OnLoadComplete Callback. - // Currently it is no problem because the all loading is processed in this method. - - // Prevent to emit unnecessary resource ready signal. - if(IsResourceReady()) - { - return; - } - - if(!mIBLResourceReady) - { - LoadImageBasedLight(); - mIBLResourceReady = true; - mIblLoadedCallback = nullptr; - } - - if(IsResourceReady()) - { - Control::SetResourceReady(false); - } -} - } // namespace Internal } // namespace Scene3D } // namespace Dali diff --git a/dali-scene3d/internal/controls/scene-view/scene-view-impl.h b/dali-scene3d/internal/controls/scene-view/scene-view-impl.h index 4dfe593..ddd7319 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.h +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.h @@ -204,16 +204,6 @@ private: */ void UpdateRenderTask(); - /** - * @brief Loads image based light from file. - */ - void LoadImageBasedLight(); - - /** - * @brief Asynchronously loading finished. - */ - void OnLoadComplete(); - private: Toolkit::Visual::Base mVisual; @@ -227,11 +217,8 @@ private: Dali::Texture mTexture; Dali::RenderTask mRenderTask; - CallbackBase* mIblLoadedCallback; - std::string mDiffuseIblUrl; - std::string mSpecularIblUrl; + Layer mRootLayer; - Layer mRootLayer; Dali::Texture mSpecularTexture; Dali::Texture mDiffuseTexture; float mIblScaleFactor{1.0f}; diff --git a/dali-scene3d/public-api/controls/model/model.cpp b/dali-scene3d/public-api/controls/model/model.cpp index 6b0c4bf..e315cb9 100644 --- a/dali-scene3d/public-api/controls/model/model.cpp +++ b/dali-scene3d/public-api/controls/model/model.cpp @@ -25,7 +25,9 @@ namespace Dali { namespace Scene3D { -Model::Model() = default; +Model::Model() +{ +} Model::Model(const Model& model) = default; @@ -35,7 +37,9 @@ Model& Model::operator=(const Model& model) = default; Model& Model::operator=(Model&& rhs) = default; -Model::~Model() = default; +Model::~Model() +{ +} Model Model::New(const std::string& modelUrl, const std::string& resourceDirectoryUrl) { diff --git a/dali-scene3d/public-api/controls/model/model.h b/dali-scene3d/public-api/controls/model/model.h index a71a77c..6678d9f 100644 --- a/dali-scene3d/public-api/controls/model/model.h +++ b/dali-scene3d/public-api/controls/model/model.h @@ -146,7 +146,6 @@ public: /** * @brief Sets Image Based Light Texture. - * @note This method doesn't load texture from file, so this work is performed synchronously. * * @param[in] diffuseTexture cube map texture that can be used as a diffuse IBL source. * @param[in] specularTexture cube map texture that can be used as a specular IBL source. -- 2.7.4