CanvasRenderer: Refactoring tvgObject management
[platform/core/uifw/dali-adaptor.git] / dali / internal / canvas-renderer / tizen / drawable-group-impl-tizen.cpp
index 18f7ada..5ec40c8 100644 (file)
@@ -71,29 +71,23 @@ void DrawableGroupTizen::Initialize()
 
   Drawable::Create();
   Drawable::SetObject(static_cast<void*>(mTvgScene));
+  Drawable::SetType(Drawable::Types::DRAWABLE_GROUP);
 #endif
 }
 
 bool DrawableGroupTizen::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
 {
 #ifdef THORVG_SUPPORT
-  Internal::Adaptor::Drawable& drawableImpl = Dali::GetImplementation(drawable);
-  tvg::Paint*                  pDrawable    = static_cast<tvg::Paint*>(drawableImpl.GetObject());
-  if(!pDrawable)
+  if(!Drawable::GetObject() || !mTvgScene)
   {
-    DALI_LOG_ERROR("Invalid drawable object [%p]\n", this);
+    DALI_LOG_ERROR("DrawableGroup is null\n");
     return false;
   }
 
+  Internal::Adaptor::Drawable& drawableImpl = Dali::GetImplementation(drawable);
   if(drawableImpl.IsAdded())
   {
-    DALI_LOG_ERROR("Already added somewhere [%p][%p]\n", this, &drawable);
-    return false;
-  }
-
-  if(mTvgScene->push(std::unique_ptr<tvg::Paint>(pDrawable)) != tvg::Result::Success)
-  {
-    DALI_LOG_ERROR("Tvg push fail [%p]\n", this);
+    DALI_LOG_ERROR("Already added [%p][%p]\n", this, &drawable);
     return false;
   }
 
@@ -110,7 +104,7 @@ bool DrawableGroupTizen::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
 bool DrawableGroupTizen::Clear()
 {
 #ifdef THORVG_SUPPORT
-  if(!mTvgScene)
+  if(!Drawable::GetObject() || !mTvgScene)
   {
     DALI_LOG_ERROR("DrawableGroup is null\n");
     return false;
@@ -118,12 +112,7 @@ bool DrawableGroupTizen::Clear()
 
   for(auto& it : mDrawables)
   {
-    Dali::CanvasRenderer::Drawable drawable = it.GetHandle();
-    if(DALI_UNLIKELY(!drawable))
-    {
-      continue;
-    }
-    Internal::Adaptor::Drawable& drawableImpl = Dali::GetImplementation(drawable);
+    Internal::Adaptor::Drawable& drawableImpl = Dali::GetImplementation(it);
     drawableImpl.SetAdded(false);
   }
 
@@ -143,6 +132,11 @@ bool DrawableGroupTizen::Clear()
 #endif
 }
 
+DrawableGroup::DrawableVector DrawableGroupTizen::GetDrawables() const
+{
+  return mDrawables;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal