From b9e79351fa25a9f65289ab8e16126eb42151667c Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 15 Jun 2021 11:37:54 +0900 Subject: [PATCH] evas vg: code refactoring. remove redundant code... Change-Id: Icbe384b0768c24c2b37012571bfecc5bda6ee1a5 --- src/lib/evas/canvas/efl_canvas_vg_container.c | 7 +----- src/lib/evas/canvas/efl_canvas_vg_object.c | 27 +---------------------- src/lib/evas/canvas/evas_vg_private.h | 17 -------------- src/modules/evas/engines/gl_generic/evas_engine.c | 2 -- 4 files changed, 2 insertions(+), 51 deletions(-) diff --git a/src/lib/evas/canvas/efl_canvas_vg_container.c b/src/lib/evas/canvas/efl_canvas_vg_container.c index a16afe7..a28b350 100644 --- a/src/lib/evas/canvas/efl_canvas_vg_container.c +++ b/src/lib/evas/canvas/efl_canvas_vg_container.c @@ -51,12 +51,7 @@ _efl_canvas_vg_container_render_pre(Evas_Object_Protected_Data *obj, cnd->render_pre(obj, child, cnd, cTransform, canvas, cd->scene); } - //We don't want to push composition sources - //FIX_TVG: when thorvg will be default, Vg_Comp structure with additional buffer and pixels - //will be removed. Then we can use only one boolean to verify if render_pre is called for - //composite object - - //FIX_TVG: or maybe we can avoid to call render_pre for composite objects? + //we can avoid to call render_pre for composite objects. if (cd->comp.src) return; if (scene) tvg_scene_push(scene, cd->scene); diff --git a/src/lib/evas/canvas/efl_canvas_vg_object.c b/src/lib/evas/canvas/efl_canvas_vg_object.c index eccd625..2e7ecef 100644 --- a/src/lib/evas/canvas/efl_canvas_vg_object.c +++ b/src/lib/evas/canvas/efl_canvas_vg_object.c @@ -326,25 +326,9 @@ _efl_canvas_vg_object_efl_file_save_save(const Eo *obj, Efl_Canvas_Vg_Object_Dat return evas_cache_vg_file_save(pd->root, w, h, file, key, info); } -static void -_cleanup_reference(void *data, const Efl_Event *event EINA_UNUSED) -{ - Efl_Canvas_Vg_Object_Data *pd = data; - Eo *renderer; - - /* unref all renderer and may also destroy them async */ - while ((renderer = eina_array_pop(&pd->cleanup))) - efl_unref(renderer); -} - EOLIAN static void _efl_canvas_vg_object_efl_object_invalidate(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd) { - Evas *e = evas_object_evas_get(eo_obj); - - efl_event_callback_del(e, EFL_CANVAS_SCENE_EVENT_RENDER_POST, _cleanup_reference, pd); - eina_array_flush(&pd->cleanup); - efl_unref(pd->root); pd->root = NULL; @@ -362,7 +346,6 @@ _efl_canvas_vg_object_efl_object_invalidate(Eo *eo_obj, Efl_Canvas_Vg_Object_Dat free(pd->tvg_buffer); pd->tvg_buffer = NULL; } - if (pd->tvg_canvas) { tvg_canvas_clear(pd->tvg_canvas, false); @@ -388,31 +371,23 @@ _efl_canvas_vg_object_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Vg_Object_Da /* default root node */ pd->obj = obj; pd->root = efl_add_ref(EFL_CANVAS_VG_CONTAINER_CLASS, NULL); - pd->sync_render = EINA_FALSE; - pd->tvg_canvas = tvg_swcanvas_create(); pd->tvg_canvas_size.w = 0; pd->tvg_canvas_size.h = 0; - eina_array_step_set(&pd->cleanup, sizeof(pd->cleanup), 8); + return eo_obj; } static Efl_Object * _efl_canvas_vg_object_efl_object_finalize(Eo *obj, Efl_Canvas_Vg_Object_Data *pd) { - Evas *e = evas_object_evas_get(obj); - /* Container must have a set parent after construction. efl_add_ref() with a parent won't work this case because container needs some jobs in overriding parent_set() after proper intialization. */ efl_parent_set(pd->root, obj); - // TODO: If we start to have to many Evas_Object_VG per canvas, it may be nice - // to actually have one event per canvas and one array per canvas to. - efl_event_callback_add(e, EFL_CANVAS_SCENE_EVENT_RENDER_POST, _cleanup_reference, pd); - return obj; } diff --git a/src/lib/evas/canvas/evas_vg_private.h b/src/lib/evas/canvas/evas_vg_private.h index fba4f61..77d3c2a 100644 --- a/src/lib/evas/canvas/evas_vg_private.h +++ b/src/lib/evas/canvas/evas_vg_private.h @@ -54,14 +54,12 @@ struct _Efl_Canvas_Vg_Object_Data Eina_Rect fill; Eina_Rect viewbox; unsigned int width, height; - Eina_Array cleanup; double align_x, align_y; Efl_Canvas_Vg_Fill_Mode fill_mode; int frame_idx; void *ckeys[2]; //cache keys for first, last frames if animation Eina_Bool changed : 1; - Eina_Bool sync_render : 1; Tvg_Canvas *tvg_canvas; Eina_Size2D tvg_canvas_size; @@ -90,11 +88,6 @@ struct _Efl_Canvas_Vg_Node_Data typedef struct _Vg_Composite { Evas_Object_Protected_Data *vg_pd; //Vector Object (for accessing backend engine) - Ector_Buffer *buffer; //Composite Ector Buffer - void *pixels; //Composite pixel buffer (actual data) - unsigned int length; //pixel buffer data size - unsigned int stride; //pixel buffer stride - Eina_Size2D size; //Composite boundary Eina_List *src; //Composite Sources Efl_Gfx_Vg_Composite_Method method; //Composite Method } Vg_Comp; @@ -108,21 +101,11 @@ struct _Efl_Canvas_Vg_Container_Data Efl_Canvas_Vg_Node *comp_target; //Composite target Vg_Comp comp; //Composite target data - /* Layer transparency feature. - This buffer is only valid when the layer has transparency. */ - struct { - Ector_Buffer *buffer; - void *pixels; - unsigned int length; //blend buffer data size - unsigned int stride; //blend buffer stride - } blend; - Tvg_Paint *scene; }; struct _Efl_Canvas_Vg_Gradient_Data { - // FIXME: Later on we should deduplicate it somehow (Using Ector ?). Evas_Vg_Gradient_Stop *colors; unsigned int colors_count; Efl_Gfx_Gradient_Spread spread; diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c index aab3cdc..c9fd544 100755 --- a/src/modules/evas/engines/gl_generic/evas_engine.c +++ b/src/modules/evas/engines/gl_generic/evas_engine.c @@ -2732,8 +2732,6 @@ eng_context_dup(void *engine EINA_UNUSED, void *context) return ctx; } -static Eina_Bool use_gl = EINA_FALSE; - static Ector_Buffer * eng_ector_buffer_wrap(void *engine EINA_UNUSED, Evas *evas, void *engine_image) { -- 2.7.4