diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.c b/src/lib/ector/cairo/ector_renderer_cairo_shape.c index 497c59d52f..babf113e18 100644 --- a/src/lib/ector/cairo/ector_renderer_cairo_shape.c +++ b/src/lib/ector/cairo/ector_renderer_cairo_shape.c @@ -45,6 +45,19 @@ struct _Ector_Renderer_Cairo_Shape_Data cairo_path_t *path; }; +static Eina_Bool +_ector_renderer_cairo_shape_path_changed(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info) +{ + Ector_Renderer_Cairo_Shape_Data *pd = data; + + USE(obj, cairo_path_destroy, EINA_TRUE); + + if (pd->path) cairo_path_destroy(pd->path); + pd->path = NULL; + + return EINA_TRUE; +} + static Eina_Bool _ector_renderer_cairo_shape_ector_renderer_generic_base_prepare(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd) { @@ -183,25 +196,15 @@ _ector_renderer_cairo_shape_ector_renderer_cairo_base_fill(Eo *obj EINA_UNUSED, return EINA_FALSE; } -static void -_ector_renderer_cairo_shape_efl_gfx_shape_path_set(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd, - const Efl_Gfx_Path_Command *op, const double *points) -{ - USE(obj, cairo_path_destroy, ); - - if (pd->path) cairo_path_destroy(pd->path); - pd->path = NULL; - - eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, efl_gfx_shape_path_set(op, points)); -} - - void _ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd) { eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, eo_constructor()); pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj); pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); + + eo_do(obj, + eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd)); } void diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.eo b/src/lib/ector/cairo/ector_renderer_cairo_shape.eo index 55bd0495d1..7dd1b3141e 100644 --- a/src/lib/ector/cairo/ector_renderer_cairo_shape.eo +++ b/src/lib/ector/cairo/ector_renderer_cairo_shape.eo @@ -6,7 +6,6 @@ class Ector.Renderer.Cairo.Shape (Ector.Renderer.Cairo.Base, Ector.Renderer.Gene Ector.Renderer.Generic.Base.prepare; Ector.Renderer.Generic.Base.draw; Ector.Renderer.Cairo.Base.fill; - Efl.Gfx.Shape.path.set; Eo.Base.constructor; Eo.Base.destructor; }