From a1e01907254953f565cf8b67d6431298ba942b05 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 9 Apr 2013 16:52:49 +0900 Subject: [PATCH] add a little code to alloc engine info in outs.. but we need a new engine api for this... i guess we have no choice... it's time for a new engine api anyway... --- src/lib/evas/canvas/evas_out.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c index e764bc3577..d03aeb7b26 100644 --- a/src/lib/evas/canvas/evas_out.c +++ b/src/lib/evas/canvas/evas_out.c @@ -12,8 +12,7 @@ EAPI Eo_Op EVAS_OUT_BASE_ID = EO_NOOP; typedef struct _Evas_Out_Public_Data Evas_Out_Public_Data; struct _Evas_Out_Public_Data { - int dummy; - Evas_Engine_Info *info; + void *info;/*, *context, *output;*/ Evas_Coord x, y, w, h; }; @@ -36,10 +35,11 @@ _constructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) Evas_Public_Data *e = eo_data_get(eo_parent, EVAS_CLASS); eo_do_super(eo_obj, MY_CLASS, eo_constructor()); if (!e) return; - eo_dat->dummy = 7; e->outputs = eina_list_append(e->outputs, eo_obj); - // XXX: create eo_dat->info from current engine - // XXX: ensure on evas free e->outputs are unreffed + if (e->engine.func->info) eo_dat->info = e->engine.func->info(eo_parent); + // XXX: context and output are currently held in the core engine and are + // allocated by engine specific internal code. this all needs a new engine + // api to make it work } EAPI void @@ -54,8 +54,10 @@ _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) Evas_Out_Public_Data *eo_dat = _pd; Eo *eo_parent = eo_parent_get(eo_obj); Evas_Public_Data *e = eo_data_get(eo_parent, EVAS_CLASS); - // XXX: delete eo_dat->info and tell engine - eo_dat->dummy = -7; + // XXX: need to free output and context one they get allocated one day + // e->engine.func->context_free(eo_dat->output, eo_dat->context); + // e->engine.func->output_free(eo_dat->output); + e->engine.func->info_free(eo_parent, eo_dat->info); if (e) { e->outputs = eina_list_remove(e->outputs, eo_obj);