diff --git a/src/lib/ector/ector_private.h b/src/lib/ector/ector_private.h index 099542b631..fc91510cfe 100644 --- a/src/lib/ector/ector_private.h +++ b/src/lib/ector/ector_private.h @@ -82,6 +82,7 @@ typedef struct _Ector_Renderer_Generic_Shape_Data Ector_Renderer_Generic_Shape_D struct _Ector_Renderer_Generic_Base_Data { + Ector_Generic_Surface *surface; Eina_Matrix3 *m; struct { diff --git a/src/lib/ector/ector_renderer_base.c b/src/lib/ector/ector_renderer_base.c index 4c84eba43e..b2b08c56b0 100644 --- a/src/lib/ector/ector_renderer_base.c +++ b/src/lib/ector/ector_renderer_base.c @@ -11,9 +11,23 @@ static void _ector_renderer_generic_base_eo_base_destructor(Eo *obj, Ector_Renderer_Generic_Base_Data *pd) { if (pd->m) free(pd->m); + eo_unref(pd->surface); + eo_do_super(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, eo_destructor()); } +static Ector_Generic_Surface * +_ector_renderer_generic_base_surface_get(Eo *obj EINA_UNUSED, Ector_Renderer_Generic_Base_Data *pd) +{ + return pd->surface; +} + +static void +_ector_renderer_generic_base_surface_set(Eo *obj EINA_UNUSED, Ector_Renderer_Generic_Base_Data *pd, Ector_Generic_Surface *s) +{ + pd->surface = eo_xref(s, obj); +} + static void _ector_renderer_generic_base_transformation_set(Eo *obj EINA_UNUSED, Ector_Renderer_Generic_Base_Data *pd, diff --git a/src/lib/ector/ector_renderer_generic_base.eo b/src/lib/ector/ector_renderer_generic_base.eo index 80043d9e92..8c6ce6e78e 100644 --- a/src/lib/ector/ector_renderer_generic_base.eo +++ b/src/lib/ector/ector_renderer_generic_base.eo @@ -5,6 +5,17 @@ abstract Ector.Renderer.Generic.Base (Eo.Base) eo_prefix: ector_renderer; legacy_prefix: null; methods { + @property surface { + set { + [[Do not use.]] + } + get { + [[Get the surface associated to this renderer. Can not be set.]] + } + values { + s: Ector.Generic.Surface *; + } + } @property transformation { set { }