X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fcanvas-renderer%2Ftizen%2Fcanvas-renderer-impl-tizen.cpp;h=422ef2d434c05e278bafb79b8a1697d437c5bd9b;hb=refs%2Fchanges%2F25%2F260325%2F11;hp=f86723dfd1cf1a83d23b01d2c7cf4cbc20a44726;hpb=949195d82375ddb310c2971a3360f224795e1391;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp index f86723d..422ef2d 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp @@ -264,6 +264,35 @@ void CanvasRendererTizen::PushDrawableToGroup(Dali::CanvasRenderer::Drawable& dr } } + Dali::CanvasRenderer::Drawable compositeDrawable = drawableImpl.GetCompositionDrawable(); + if(DALI_UNLIKELY(compositeDrawable)) + { + Internal::Adaptor::Drawable& compositeDrawableImpl = Dali::GetImplementation(compositeDrawable); + tvg::Paint* tvgCompositeObject = static_cast(compositeDrawableImpl.GetObject()); + if(tvgCompositeObject) + { + tvg::Paint* tvgDuplicatedCompositeObject = tvgCompositeObject->duplicate(); + Drawable::Types type = compositeDrawableImpl.GetType(); + + if(type == Drawable::Types::DRAWABLE_GROUP) + { + Dali::CanvasRenderer::DrawableGroup& compositeGroup = static_cast(compositeDrawable); + Internal::Adaptor::DrawableGroup& compositeDrawableGroupImpl = Dali::GetImplementation(compositeGroup); + DrawableGroup::DrawableVector compositeDrawables = compositeDrawableGroupImpl.GetDrawables(); + for(auto& it : compositeDrawables) + { + PushDrawableToGroup(it, static_cast(tvgDuplicatedCompositeObject)); + } + } + + if(tvgDuplicatedObject->composite(std::move(std::unique_ptr(tvgDuplicatedCompositeObject)), static_cast(drawableImpl.GetCompositionType())) != tvg::Result::Success) + { + DALI_LOG_ERROR("Tvg composite fail [%p]\n", this); + return; + } + } + } + if(parent->push(std::move(std::unique_ptr(tvgDuplicatedObject))) != tvg::Result::Success) { DALI_LOG_ERROR("Tvg push fail [%p]\n", this);