forked from enlightenment/efl
ector: don't use eo parent relationship for accessing the surface.
This commit is contained in:
parent
4f0ef04788
commit
9c3c402fd6
|
@ -58,15 +58,12 @@ _ector_cairo_extent_get(Efl_Gfx_Gradient_Spread s)
|
|||
if (!Sym) return Error;
|
||||
|
||||
static inline void *
|
||||
_ector_cairo_symbol_get(Eo *obj, const char *name)
|
||||
_ector_cairo_symbol_get(Ector_Renderer_Generic_Base_Data *base,
|
||||
const char *name)
|
||||
{
|
||||
Eo *parent;
|
||||
void *sym;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
if (!parent) return NULL;
|
||||
|
||||
eo_do(parent, sym = ector_cairo_surface_symbol_get(name));
|
||||
eo_do(base->surface, sym = ector_cairo_surface_symbol_get(name));
|
||||
return sym;
|
||||
}
|
||||
|
||||
|
@ -74,15 +71,12 @@ extern void (*cairo_pattern_add_color_stop_rgba)(cairo_pattern_t *pattern, doubl
|
|||
double red, double green, double blue, double alpha);
|
||||
|
||||
static inline void
|
||||
_ector_renderer_cairo_gradient_prepare(Eo *obj,
|
||||
cairo_pattern_t *pat,
|
||||
_ector_renderer_cairo_gradient_prepare(cairo_pattern_t *pat,
|
||||
Ector_Renderer_Generic_Gradient_Data *src,
|
||||
unsigned int mul_col)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
USE(obj, cairo_pattern_add_color_stop_rgba, );
|
||||
|
||||
for (i = 0; i < src->colors_count; i++)
|
||||
{
|
||||
int r,g,b,a;
|
||||
|
|
|
@ -62,11 +62,15 @@ _ector_cairo_surface_ector_generic_surface_renderer_factory_new(Eo *obj,
|
|||
const Eo_Class *type)
|
||||
{
|
||||
if (type == ECTOR_RENDERER_GENERIC_SHAPE_MIXIN)
|
||||
return eo_add(ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj);
|
||||
return eo_add(ECTOR_RENDERER_CAIRO_SHAPE_CLASS, NULL,
|
||||
ector_renderer_surface_set(obj));
|
||||
else if (type == ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN)
|
||||
return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, obj);
|
||||
return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, NULL,
|
||||
ector_renderer_surface_set(obj));
|
||||
else if (type == ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN)
|
||||
return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, obj);
|
||||
return eo_add(ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, NULL,
|
||||
ector_renderer_surface_set(obj));
|
||||
|
||||
ERR("Couldn't find class for type: %s\n", eo_class_name_get(type));
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -99,11 +99,7 @@ _ector_renderer_cairo_base_ector_renderer_generic_base_prepare(Eo *obj, Ector_Re
|
|||
{
|
||||
if (!pd->parent)
|
||||
{
|
||||
Eo *parent;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
if (!parent) return EINA_FALSE;
|
||||
pd->parent = eo_data_xref(parent, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
pd->parent = eo_data_xref(pd->generic->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
}
|
||||
if (pd->generic->m)
|
||||
{
|
||||
|
@ -186,22 +182,31 @@ _ector_renderer_cairo_base_ector_renderer_generic_base_draw(Eo *obj EINA_UNUSED,
|
|||
static Eo *
|
||||
_ector_renderer_cairo_base_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd EINA_UNUSED)
|
||||
{
|
||||
USE(obj, cairo_matrix_init, NULL);
|
||||
USE(obj, cairo_translate, NULL);
|
||||
USE(obj, cairo_set_source_rgba, NULL);
|
||||
USE(obj, cairo_transform, NULL);
|
||||
USE(obj, cairo_set_operator, NULL);
|
||||
USE(obj, cairo_new_path, NULL);
|
||||
USE(obj, cairo_rectangle, NULL);
|
||||
USE(obj, cairo_clip, NULL);
|
||||
USE(obj, cairo_device_to_user, NULL);
|
||||
USE(obj, cairo_matrix_init_identity, NULL);
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, obj = eo_constructor());
|
||||
if (!obj) return NULL;
|
||||
|
||||
pd->generic = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static Eo_Base *
|
||||
_ector_renderer_cairo_base_eo_base_finalize(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd)
|
||||
{
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, obj = eo_finalize());
|
||||
if (!obj) return NULL;
|
||||
|
||||
USE(pd->generic, cairo_matrix_init, NULL);
|
||||
USE(pd->generic, cairo_translate, NULL);
|
||||
USE(pd->generic, cairo_set_source_rgba, NULL);
|
||||
USE(pd->generic, cairo_transform, NULL);
|
||||
USE(pd->generic, cairo_set_operator, NULL);
|
||||
USE(pd->generic, cairo_new_path, NULL);
|
||||
USE(pd->generic, cairo_rectangle, NULL);
|
||||
USE(pd->generic, cairo_clip, NULL);
|
||||
USE(pd->generic, cairo_device_to_user, NULL);
|
||||
USE(pd->generic, cairo_matrix_init_identity, NULL);
|
||||
|
||||
cairo_matrix_init_identity(&identity);
|
||||
|
||||
return obj;
|
||||
|
@ -210,14 +215,14 @@ _ector_renderer_cairo_base_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Bas
|
|||
static void
|
||||
_ector_renderer_cairo_base_eo_base_destructor(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
eo_data_xunref(base->surface, pd->parent, obj);
|
||||
eo_data_xunref(obj, pd->generic, obj);
|
||||
|
||||
free(pd->m);
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
eo_data_xunref(parent, pd->parent, obj);
|
||||
eo_data_xunref(obj, pd->generic, obj);
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, eo_destructor());
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ abstract Ector.Renderer.Cairo.Base (Ector.Renderer.Generic.Base)
|
|||
Ector.Renderer.Generic.Base.color.set;
|
||||
Ector.Renderer.Generic.Base.color.get;
|
||||
Eo.Base.constructor;
|
||||
Eo.Base.finalize;
|
||||
Eo.Base.destructor;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ struct _Ector_Renderer_Cairo_Gradient_Linear_Data
|
|||
};
|
||||
|
||||
static cairo_pattern_t *
|
||||
_ector_renderer_cairo_gradient_linear_prepare(Eo *obj,
|
||||
_ector_renderer_cairo_gradient_linear_prepare(Eo *obj EINA_UNUSED,
|
||||
Ector_Renderer_Generic_Gradient_Linear_Data *gld,
|
||||
Ector_Renderer_Generic_Gradient_Data *gd,
|
||||
unsigned int mul_col)
|
||||
|
@ -37,7 +37,7 @@ _ector_renderer_cairo_gradient_linear_prepare(Eo *obj,
|
|||
pat = cairo_pattern_create_linear(gld->start.x, gld->start.y,
|
||||
gld->end.x, gld->end.y);
|
||||
if (!pat) return NULL;
|
||||
_ector_renderer_cairo_gradient_prepare(obj, pat, gd, mul_col);
|
||||
_ector_renderer_cairo_gradient_prepare(pat, gd, mul_col);
|
||||
|
||||
cairo_pattern_set_extend(pat, _ector_cairo_extent_get(gd->s));
|
||||
|
||||
|
@ -52,11 +52,10 @@ _ector_renderer_cairo_gradient_linear_ector_renderer_generic_base_prepare(Eo *ob
|
|||
|
||||
if (!pd->parent)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
if (!parent) return EINA_FALSE;
|
||||
pd->parent = eo_data_xref(parent, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
pd->parent = eo_data_xref(base->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
}
|
||||
|
||||
return EINA_FALSE;
|
||||
|
@ -131,19 +130,25 @@ _ector_renderer_cairo_gradient_linear_ector_renderer_generic_base_bounds_get(Eo
|
|||
}
|
||||
|
||||
static Eo_Base *
|
||||
_ector_renderer_cairo_gradient_linear_eo_base_constructor(Eo *obj,
|
||||
Ector_Renderer_Cairo_Gradient_Linear_Data *pd EINA_UNUSED)
|
||||
_ector_renderer_cairo_gradient_linear_eo_base_finalize(Eo *obj, Ector_Renderer_Cairo_Gradient_Linear_Data *pd EINA_UNUSED)
|
||||
{
|
||||
USE(obj, cairo_set_source, NULL);
|
||||
USE(obj, cairo_pattern_destroy, NULL);
|
||||
USE(obj, cairo_rectangle, NULL);
|
||||
USE(obj, cairo_fill, NULL);
|
||||
USE(obj, cairo_pattern_destroy, NULL);
|
||||
USE(obj, cairo_set_source, NULL);
|
||||
USE(obj, cairo_pattern_set_extend, NULL);
|
||||
USE(obj, cairo_pattern_create_linear, NULL);
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, obj = eo_finalize());
|
||||
if (!obj) return NULL;
|
||||
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
|
||||
USE(base, cairo_set_source, NULL);
|
||||
USE(base, cairo_pattern_destroy, NULL);
|
||||
USE(base, cairo_rectangle, NULL);
|
||||
USE(base, cairo_fill, NULL);
|
||||
USE(base, cairo_pattern_destroy, NULL);
|
||||
USE(base, cairo_set_source, NULL);
|
||||
USE(base, cairo_pattern_set_extend, NULL);
|
||||
USE(base, cairo_pattern_create_linear, NULL);
|
||||
USE(base, cairo_pattern_add_color_stop_rgba, NULL);
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, obj = eo_constructor());
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -151,10 +156,10 @@ static void
|
|||
_ector_renderer_cairo_gradient_linear_eo_base_destructor(Eo *obj,
|
||||
Ector_Renderer_Cairo_Gradient_Linear_Data *pd)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
eo_data_xunref(parent, pd->parent, obj);
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
eo_data_xunref(base->surface, pd->parent, obj);
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, eo_destructor());
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ class Ector.Renderer.Cairo.Gradient_Linear (Ector.Renderer.Cairo.Base, Ector.Ren
|
|||
Ector.Renderer.Generic.Base.bounds_get;
|
||||
Ector.Renderer.Generic.Base.crc.get;
|
||||
Ector.Renderer.Cairo.Base.fill;
|
||||
Eo.Base.constructor;
|
||||
Eo.Base.finalize;
|
||||
Eo.Base.destructor;
|
||||
Efl.Gfx.Gradient.Base.stop.set;
|
||||
}
|
||||
|
|
|
@ -38,18 +38,17 @@ _ector_renderer_cairo_gradient_radial_ector_renderer_generic_base_prepare(Eo *ob
|
|||
|
||||
if (!pd->parent)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
if (!parent) return EINA_FALSE;
|
||||
pd->parent = eo_data_xref(parent, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
pd->parent = eo_data_xref(base->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
}
|
||||
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static cairo_pattern_t *
|
||||
_ector_renderer_cairo_gradient_radial_prepare(Eo *obj,
|
||||
_ector_renderer_cairo_gradient_radial_prepare(Eo *obj EINA_UNUSED,
|
||||
Ector_Renderer_Generic_Gradient_Radial_Data *grd,
|
||||
Ector_Renderer_Generic_Gradient_Data *gd,
|
||||
unsigned int mul_col)
|
||||
|
@ -60,7 +59,7 @@ _ector_renderer_cairo_gradient_radial_prepare(Eo *obj,
|
|||
grd->radial.x, grd->radial.y, grd->radius);
|
||||
if (!pat) return NULL;
|
||||
|
||||
_ector_renderer_cairo_gradient_prepare(obj, pat, gd, mul_col);
|
||||
_ector_renderer_cairo_gradient_prepare(pat, gd, mul_col);
|
||||
|
||||
cairo_pattern_set_extend(pat, _ector_cairo_extent_get(gd->s));
|
||||
|
||||
|
@ -136,19 +135,24 @@ _ector_renderer_cairo_gradient_radial_ector_renderer_generic_base_bounds_get(Eo
|
|||
}
|
||||
|
||||
static Eo_Base *
|
||||
_ector_renderer_cairo_gradient_radial_eo_base_constructor(Eo *obj,
|
||||
Ector_Renderer_Cairo_Gradient_Radial_Data *pd EINA_UNUSED)
|
||||
_ector_renderer_cairo_gradient_radial_eo_base_finalize(Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd EINA_UNUSED)
|
||||
{
|
||||
USE(obj, cairo_set_source, NULL);
|
||||
USE(obj, cairo_pattern_destroy, NULL);
|
||||
USE(obj, cairo_arc, NULL);
|
||||
USE(obj, cairo_fill, NULL);
|
||||
USE(obj, cairo_set_source, NULL);
|
||||
USE(obj, cairo_pattern_destroy, NULL);
|
||||
USE(obj, cairo_pattern_set_extend, NULL);
|
||||
USE(obj, cairo_pattern_create_radial, NULL);
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, obj = eo_finalize());
|
||||
if (!obj) return NULL;
|
||||
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
|
||||
USE(base, cairo_set_source, NULL);
|
||||
USE(base, cairo_pattern_destroy, NULL);
|
||||
USE(base, cairo_arc, NULL);
|
||||
USE(base, cairo_fill, NULL);
|
||||
USE(base, cairo_set_source, NULL);
|
||||
USE(base, cairo_pattern_destroy, NULL);
|
||||
USE(base, cairo_pattern_set_extend, NULL);
|
||||
USE(base, cairo_pattern_create_radial, NULL);
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, obj = eo_constructor());
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -156,10 +160,10 @@ static void
|
|||
_ector_renderer_cairo_gradient_radial_eo_base_destructor(Eo *obj,
|
||||
Ector_Renderer_Cairo_Gradient_Radial_Data *pd)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
eo_data_xunref(parent, pd->parent, obj);
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
eo_data_xunref(base->surface, pd->parent, obj);
|
||||
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, eo_destructor());
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ class Ector.Renderer.Cairo.Gradient_Radial (Ector.Renderer.Cairo.Base, Ector.Ren
|
|||
Ector.Renderer.Generic.Base.crc.get;
|
||||
Ector.Renderer.Cairo.Base.fill;
|
||||
Eo.Base.destructor;
|
||||
Eo.Base.constructor;
|
||||
Eo.Base.finalize;
|
||||
Efl.Gfx.Gradient.Base.stop.set;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -95,12 +95,10 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_prepare(Eo *obj, Ector_R
|
|||
// shouldn't that be moved to the cairo base object
|
||||
if (!pd->parent)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
if (!parent) return EINA_FALSE;
|
||||
pd->parent = eo_data_xref(parent, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
if (!pd->parent) return EINA_FALSE;
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
pd->parent = eo_data_xref(base->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
|
||||
}
|
||||
|
||||
eo_do(obj, efl_gfx_shape_path_get(&cmds, &pts));
|
||||
|
@ -238,28 +236,7 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_bounds_get(Eo *obj,
|
|||
Eo *
|
||||
_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
||||
{
|
||||
USE(obj, cairo_path_destroy, NULL);
|
||||
USE(obj, cairo_restore, NULL);
|
||||
USE(obj, cairo_fill, NULL);
|
||||
USE(obj, cairo_set_dash, NULL);
|
||||
USE(obj, cairo_fill_preserve, NULL);
|
||||
USE(obj, cairo_set_source_rgba, NULL);
|
||||
USE(obj, cairo_stroke, NULL);
|
||||
USE(obj, cairo_set_line_width, NULL);
|
||||
USE(obj, cairo_set_line_cap, NULL);
|
||||
USE(obj, cairo_set_line_join, NULL);
|
||||
USE(obj, cairo_new_path, NULL);
|
||||
USE(obj, cairo_append_path, NULL);
|
||||
USE(obj, cairo_save, NULL);
|
||||
USE(obj, cairo_copy_path, NULL);
|
||||
USE(obj, cairo_close_path, NULL);
|
||||
USE(obj, cairo_curve_to, NULL);
|
||||
USE(obj, cairo_line_to, NULL);
|
||||
USE(obj, cairo_new_path, NULL);
|
||||
USE(obj, cairo_path_destroy, NULL);
|
||||
USE(obj, cairo_move_to, NULL);
|
||||
|
||||
obj = eo_do_super_ret(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj, eo_constructor());
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj = eo_constructor());
|
||||
if (!obj) return NULL;
|
||||
|
||||
pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
|
||||
|
@ -268,19 +245,48 @@ _ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Sh
|
|||
eo_do(obj,
|
||||
eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static Eo_Base *
|
||||
_ector_renderer_cairo_shape_eo_base_finalize(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
||||
{
|
||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj = eo_finalize());
|
||||
if (!obj) return NULL;
|
||||
|
||||
USE(pd->base, cairo_path_destroy, NULL);
|
||||
USE(pd->base, cairo_restore, NULL);
|
||||
USE(pd->base, cairo_fill, NULL);
|
||||
USE(pd->base, cairo_set_dash, NULL);
|
||||
USE(pd->base, cairo_fill_preserve, NULL);
|
||||
USE(pd->base, cairo_set_source_rgba, NULL);
|
||||
USE(pd->base, cairo_stroke, NULL);
|
||||
USE(pd->base, cairo_set_line_width, NULL);
|
||||
USE(pd->base, cairo_set_line_cap, NULL);
|
||||
USE(pd->base, cairo_set_line_join, NULL);
|
||||
USE(pd->base, cairo_new_path, NULL);
|
||||
USE(pd->base, cairo_append_path, NULL);
|
||||
USE(pd->base, cairo_save, NULL);
|
||||
USE(pd->base, cairo_copy_path, NULL);
|
||||
USE(pd->base, cairo_close_path, NULL);
|
||||
USE(pd->base, cairo_curve_to, NULL);
|
||||
USE(pd->base, cairo_line_to, NULL);
|
||||
USE(pd->base, cairo_move_to, NULL);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
void
|
||||
_ector_renderer_cairo_shape_eo_base_destructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
||||
{
|
||||
Eo *parent;
|
||||
Ector_Renderer_Generic_Base_Data *base;
|
||||
|
||||
//FIXME, As base class destructor can't call destructor of mixin class.
|
||||
// call explicit API to free shape data.
|
||||
eo_do(obj, efl_gfx_shape_reset());
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
eo_data_xunref(parent, pd->parent, obj);
|
||||
base = eo_data_scope_get(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS);
|
||||
eo_data_xunref(base->surface, pd->parent, obj);
|
||||
|
||||
eo_data_xunref(obj, pd->shape, obj);
|
||||
eo_data_xunref(obj, pd->base, obj);
|
||||
|
|
|
@ -9,6 +9,7 @@ class Ector.Renderer.Cairo.Shape (Ector.Renderer.Cairo.Base, Ector.Renderer.Gene
|
|||
Ector.Renderer.Generic.Base.crc.get;
|
||||
Ector.Renderer.Cairo.Base.fill;
|
||||
Eo.Base.constructor;
|
||||
Eo.Base.finalize;
|
||||
Eo.Base.destructor;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue