evas vg: remove ector usage: efl_canvas_vg_container.c 27/257227/5
authorMichal Maciola <m.maciola@samsung.com>
Thu, 22 Apr 2021 10:36:50 +0000 (12:36 +0200)
committerHermet Park <chuneon.park@samsung.com>
Wed, 28 Apr 2021 03:41:24 +0000 (03:41 +0000)
Removed all ector calls from evas file efl_canvas_vg_container.c
Function 'efl_canvas_vg_container_blend_buffer_clear' was also removed.

Change-Id: I80258e68cc37de5157a061621f96a924bf9052ca

src/lib/evas/canvas/efl_canvas_vg_container.c
src/lib/evas/canvas/efl_canvas_vg_object.c
src/lib/evas/canvas/evas_vg_private.h

index ca3d785..b9b91bd 100644 (file)
@@ -22,140 +22,6 @@ _invalidate_cb(void *data EINA_UNUSED, const Efl_Event *event)
       efl_unref(child);
 }
 
-#ifndef HAVE_THORVG
-static void
-_draw_comp(Evas_Object_Protected_Data *obj, Efl_VG *node,
-           Ector_Surface *ector, void *engine, void *output,
-           void *context)
-{
-   if (!efl_gfx_entity_visible_get(node)) return;
-
-   if (efl_isa(node, EFL_CANVAS_VG_CONTAINER_CLASS))
-     {
-        Efl_Canvas_Vg_Container_Data *cd =
-           efl_data_scope_get(node, EFL_CANVAS_VG_CONTAINER_CLASS);
-
-        //Draw Composite Image.
-        Efl_VG *child;
-        Eina_List *l;
-        EINA_LIST_FOREACH(cd->children, l, child)
-          _draw_comp(obj, child, ector, engine, output, context);
-     }
-   else
-     {
-        Efl_Canvas_Vg_Node_Data *nd = efl_data_scope_get(node, EFL_CANVAS_VG_NODE_CLASS);
-        ENFN->ector_renderer_draw(engine, output, context, nd->renderer, NULL, EINA_FALSE);
-     }
-}
-
-static Ector_Buffer *
-_prepare_comp(Evas_Object_Protected_Data *obj,     //vector object
-              Efl_Canvas_Vg_Node* comp_target,
-              void *engine, void *output, void *context,
-              Ector_Surface *surface,
-              Eina_Matrix3 *ptransform,
-              Eina_Matrix3 *ctransform,
-              int p_opacity,
-              int c_opacity,
-              Ector_Buffer *comp,
-              Efl_Gfx_Vg_Composite_Method comp_method)
-{
-
-   Efl_Canvas_Vg_Container_Data *pd = efl_data_scope_get(comp_target, MY_CLASS);
-   Efl_Canvas_Vg_Node_Data *nd =
-         efl_data_scope_get(comp_target, EFL_CANVAS_VG_NODE_CLASS);
-   if (nd->flags == EFL_GFX_CHANGE_FLAG_NONE) return pd->comp.buffer;
-   uint32_t init_buffer = 0x0;
-
-   //1. Composite Size
-   Eina_Size2D size;
-   size.w = obj->cur->geometry.w;
-   size.h = obj->cur->geometry.h;
-
-   //FIXME: If composite method is SUBSTRACT or INTERSECT, buffer fills in white color(Full alpha color).
-   if (pd->comp.method == EFL_GFX_VG_COMPOSITE_METHOD_MASK_SUBSTRACT ||
-       pd->comp.method == EFL_GFX_VG_COMPOSITE_METHOD_MASK_INTERSECT)
-     init_buffer = 0xFFFFFFFF;
-
-   //2. Reusable ector buffer?
-   if (pd->comp.buffer &&
-       ((pd->comp.size.w != size.w) ||
-       (pd->comp.size.h != size.h)))
-
-     {
-        if (pd->comp.pixels)
-          ector_buffer_unmap(pd->comp.buffer, pd->comp.pixels, pd->comp.length);
-        efl_unref(pd->comp.buffer);
-        pd->comp.buffer = NULL;
-     }
-
-   if (!pd->comp.buffer)
-     {
-        pd->comp.buffer = ENFN->ector_buffer_new(ENC, obj->layer->evas->evas,
-                                                 size.w, size.h,
-                                                 EFL_GFX_COLORSPACE_ARGB8888,
-                                                 ECTOR_BUFFER_FLAG_DRAWABLE |
-                                                 ECTOR_BUFFER_FLAG_CPU_READABLE |
-                                                 ECTOR_BUFFER_FLAG_CPU_WRITABLE);
-        pd->comp.size.w = size.w;
-        pd->comp.size.h = size.h;
-        pd->comp.vg_pd = obj;
-
-        //Map
-        pd->comp.pixels = ector_buffer_map(pd->comp.buffer, &pd->comp.length,
-                                           (ECTOR_BUFFER_FLAG_DRAWABLE |
-                                            ECTOR_BUFFER_FLAG_CPU_READABLE |
-                                            ECTOR_BUFFER_FLAG_CPU_WRITABLE),
-                                           0, 0, size.w, size.h,
-                                           EFL_GFX_COLORSPACE_ARGB8888,
-                                           &pd->comp.stride);
-        if (!pd->comp.pixels) ERR("Failed to map VG composite buffer");
-
-        //If composite method is SUBSTRACT or INTERSECT, Buffer needs initialize.
-        if (pd->comp.pixels &&
-            (pd->comp.method == EFL_GFX_VG_COMPOSITE_METHOD_MASK_SUBSTRACT ||
-             pd->comp.method == EFL_GFX_VG_COMPOSITE_METHOD_MASK_INTERSECT))
-          memset(pd->comp.pixels, init_buffer, pd->comp.length);
-     }
-   else
-     {
-        if (pd->comp.pixels)
-          memset(pd->comp.pixels, init_buffer, pd->comp.length);
-     }
-
-   if (!pd->comp.buffer) ERR("Composite Buffer is invalid");
-
-   //FIXME: This code means that there is another composite container.
-   if (pd->comp.method >= EFL_GFX_VG_COMPOSITE_METHOD_MASK_ADD)
-     {
-        Efl_Canvas_Vg_Container_Data *target_pd = pd;
-        comp = pd->comp.buffer;
-        for (Efl_VG *comp_target = pd->comp_target; comp_target; comp_target = target_pd->comp_target)
-          {
-             Efl_Canvas_Vg_Container_Data *src_pd = NULL;
-             target_pd = efl_data_scope_get(comp_target, MY_CLASS);
-             src_pd = efl_data_scope_get(eina_list_nth(target_pd->comp.src, 0), MY_CLASS);
-             _evas_vg_render_pre(obj, comp_target,
-                                 engine, output, context, surface,
-                                 ctransform, c_opacity, comp, src_pd->comp.method);
-          }
-     }
-
-   //3. Prepare Drawing shapes.
-   _evas_vg_render_pre(obj, comp_target,
-                       engine, output, context,
-                       surface,
-                       ptransform, p_opacity, comp, comp_method);
-
-   //4. Generating Composite Image.
-   ector_buffer_pixels_set(surface, pd->comp.pixels, size.w, size.h, pd->comp.stride,
-                           EFL_GFX_COLORSPACE_ARGB8888, EINA_TRUE);
-   ector_surface_reference_point_set(surface, 0, 0);
-   _draw_comp(obj, comp_target, surface, engine, output, context);
-
-   return pd->comp.buffer;
-}
-#else
 static void
 _efl_canvas_vg_container_render_pre_tvg(Evas_Object_Protected_Data *obj,
                                     EINA_UNUSED Efl_VG *node,
@@ -197,7 +63,6 @@ _efl_canvas_vg_container_render_pre_tvg(Evas_Object_Protected_Data *obj,
    if (scene) tvg_scene_push(scene, cd->scene);
    else if (canvas) tvg_canvas_push(canvas, cd->scene);
 }
-#endif
 
 static void
 _efl_canvas_vg_container_render_pre(Evas_Object_Protected_Data *vg_pd,
@@ -224,23 +89,6 @@ _efl_canvas_vg_container_render_pre(Evas_Object_Protected_Data *vg_pd,
    EFL_CANVAS_VG_COMPUTE_MATRIX(ctransform, ptransform, nd);
    EFL_CANVAS_VG_COMPUTE_ALPHA(c_r, c_g, c_b, c_a, p_opacity, nd);
 
-   //Container may have composite target.
-   //FIXME : _prepare_comp() should only work in cases with matte or masking.
-   // This condition is valid because the masking use same type as matte.
-
-   //FIX_TVG: Missing tvg support composition????
-#ifndef HAVE_THORVG
-   if (pd->comp_target &&
-       (pd->comp.method == EFL_GFX_VG_COMPOSITE_METHOD_MATTE_ALPHA ||
-        pd->comp.method == EFL_GFX_VG_COMPOSITE_METHOD_MATTE_ALPHA_INVERSE))
-     {
-        comp_method = pd->comp.method;
-        comp = _prepare_comp(vg_pd, pd->comp_target,
-                             engine, output, context, surface,
-                             ptransform, ctransform, p_opacity, c_a, comp, comp_method);
-     }
-#endif
-
    //If the container has transparency, it internally alpha blends with ector buffer.
    //So ector buffer must be created synchronously.
    if (c_a < 255 && vg_pd && vg_pd->object)
@@ -300,10 +148,8 @@ _efl_canvas_vg_container_efl_object_constructor(Eo *obj,
 
    efl_gfx_color_set(obj, 255, 255, 255, 255);
 
-#ifdef HAVE_THORVG
    pd->scene = tvg_scene_new();
    nd->render_pre_tvg = _efl_canvas_vg_container_render_pre_tvg;
-#endif
 
    return obj;
 }
@@ -314,18 +160,8 @@ _efl_canvas_vg_container_efl_object_destructor(Eo *obj,
 {
    efl_canvas_vg_container_blend_buffer_clear(obj, pd);
 
-#ifndef HAVE_THORVG
-   //Destroy comp surface
-   if (pd->comp.buffer)
-     {
-        if (pd->comp.pixels)
-          ector_buffer_unmap(pd->comp.buffer, pd->comp.pixels, pd->comp.length);
-        efl_unref(pd->comp.buffer);
-     }
-#else
    if (!pd->comp.src && pd->scene)
      tvg_paint_del(pd->scene);
-#endif
 
    efl_unref(pd->comp_target);
    eina_list_free(pd->comp.src);
@@ -488,11 +324,10 @@ _efl_canvas_vg_container_efl_canvas_vg_node_comp_method_set(Eo *obj,
      {
         Efl_Canvas_Vg_Container_Data *pd2 = efl_data_scope_get(target, MY_CLASS);
         pd2->comp.src = eina_list_append(pd2->comp.src, obj);
-#ifdef HAVE_THORVG
+
         //FIX_TVG: currently only matte alpha is supported. Observed crash in thorvg when CLIP_PATH method is used.
         if (method == EFL_GFX_VG_COMPOSITE_METHOD_MATTE_ALPHA)
           tvg_paint_set_composite_method(pd->scene, pd2->scene, TVG_COMPOSITE_METHOD_ALPHA_MASK);
-#endif
      }
 
    pd->comp.method = method;
@@ -578,22 +413,6 @@ efl_canvas_vg_container_vg_obj_update(Efl_VG *obj, Efl_Canvas_Vg_Node_Data *nd)
      }
 }
 
-void
-efl_canvas_vg_container_blend_buffer_clear(Efl_VG *obj EINA_UNUSED, Efl_Canvas_Vg_Container_Data *cd)
-{
-#ifndef HAVE_THORVG
-   if (!cd->blend.buffer) return;
-
-   if (cd->blend.pixels)
-     {
-        ector_buffer_unmap(cd->blend.buffer, cd->blend.pixels, cd->blend.length);
-        cd->blend.pixels = NULL;
-     }
-   if (cd->blend.buffer) efl_unref(cd->blend.buffer);
-   cd->blend.buffer = NULL;
-#endif
-}
-
 EAPI Evas_Vg_Container *
 evas_vg_container_add(Evas_Object *parent)
 {
index 46915ff..da90d6b 100644 (file)
@@ -509,8 +509,6 @@ _evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Object_Data *pd,
                {
                   int w2, h2;
                   ector_buffer_size_get(cd->blend.buffer, &w2, &h2);
-                  if (w2 != w || h2 != h)
-                    efl_canvas_vg_container_blend_buffer_clear(node, cd);
                }
 
              if (!cd->blend.buffer)
@@ -565,8 +563,6 @@ _evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Object_Data *pd,
           }
         else
           {
-             efl_canvas_vg_container_blend_buffer_clear(node, cd);
-
              EINA_LIST_FOREACH(cd->children, l, child)
                 _evas_vg_render(obj, pd, engine, output, context, child, clips, w, h, ector, do_async);
           }
index 6fa5a80..73885cc 100644 (file)
@@ -181,7 +181,6 @@ void *                      evas_cache_vg_surface_key_get(Efl_Canvas_Vg_Node *ro
 void                        efl_canvas_vg_node_vg_obj_set(Efl_VG *node, Efl_VG *vg_obj, Efl_Canvas_Vg_Object_Data *vd);
 void                        efl_canvas_vg_node_change(Efl_VG *node);
 void                        efl_canvas_vg_container_vg_obj_update(Efl_VG *obj, Efl_Canvas_Vg_Node_Data *nd);
-void                        efl_canvas_vg_container_blend_buffer_clear(Efl_VG *obj, Efl_Canvas_Vg_Container_Data *cd);
 
 //TIZEN_ONLY(200717) : evas_vg_cache: Add sector_list_get
 Eina_Inarray*               evas_cache_vg_anim_sector_list_get(const Vg_Cache_Entry* vg_entry);