cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=22beae8b737daf0915856a12edb8294177a0ca83
commit 22beae8b737daf0915856a12edb8294177a0ca83 Author: Cedric BAIL <[email protected]> Date: Fri Aug 25 10:48:17 2017 -0700 evas: refactor the creation of the output info logic in libevas. --- src/lib/evas/canvas/evas_main.c | 11 +---------- src/lib/evas/canvas/evas_out.c | 35 ++++++++++++++++++++--------------- src/lib/evas/include/evas_private.h | 2 ++ 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index d713c4abc0..f72f0d71f1 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -1044,16 +1044,7 @@ evas_output_method_set(Evas *eo_e, int render_method) Eina_List *l; EINA_LIST_FOREACH(e->outputs, l, output) - if (!output->info) - { - output->info = calloc(1, e->engine.func->info_size); - if (!output->info) continue ; - output->info->magic = rand(); - output->info_magic = output->info->magic; - - if (e->engine.func->output_info_setup) - e->engine.func->output_info_setup(output->info); - } + efl_canvas_output_info_get(e, output); } else { diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c index 567ea58dc8..fa8d914bee 100644 --- a/src/lib/evas/canvas/evas_out.c +++ b/src/lib/evas/canvas/evas_out.c @@ -19,6 +19,25 @@ _efl_canvas_output_async_block(Efl_Canvas_Output *output) return e; } +void +efl_canvas_output_info_get(Evas_Public_Data *e, Efl_Canvas_Output *output) +{ + if (output->info) return ; + if (!e->engine.func->info_size) + { + CRI("Engine not up to date no info size provided."); + return ; + } + + output->info = calloc(1, e->engine.func->info_size); + if (!output->info) return; + output->info->magic = rand(); + output->info_magic = output->info->magic; + + if (e->engine.func->output_info_setup) + e->engine.func->output_info_setup(output->info); +} + EAPI Efl_Canvas_Output * efl_canvas_output_add(Evas *canvas) { @@ -38,22 +57,8 @@ efl_canvas_output_add(Evas *canvas) // The engine is already initialized, use it // right away to setup the info structure - if (e->engine.func->info_size) - { - r->info = calloc(1, e->engine.func->info_size); - if (!r->info) goto on_error; - r->info->magic = rand(); - r->info_magic = r->info->magic; - - if (e->engine.func->output_info_setup) - e->engine.func->output_info_setup(r->info); - } - else - { - CRI("Engine not up to date no info size provided."); - } + efl_canvas_output_info_get(e, r); - on_error: return r; } diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index ba6b752940..7f8eb355b6 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -2090,6 +2090,8 @@ Eina_List *_evas_pointer_list_in_rect_get(Evas_Public_Data *edata, Evas_Object_Protected_Data *obj_data, int w, int h); +void efl_canvas_output_info_get(Evas_Public_Data *e, Efl_Canvas_Output *output); + extern Eina_Cow *evas_object_proxy_cow; extern Eina_Cow *evas_object_map_cow; extern Eina_Cow *evas_object_state_cow; --
