From b5456893ee8a1a86a9b7e0342f644f3785711e06 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Mon, 12 Sep 2016 16:18:08 -0700 Subject: [PATCH] evas: start working on efl_canvas_output. This should when done enable the possibility for multi screen in wayland along with remote display, wireless display and screencasting. --- src/Makefile_Evas.am | 2 +- .../{evas_out.eo => efl_canvas_output.eo} | 12 +++-- src/lib/evas/canvas/evas_main.c | 2 +- src/lib/evas/canvas/evas_out.c | 46 ++++++++++--------- src/lib/evas/include/evas_private.h | 1 - 5 files changed, 35 insertions(+), 28 deletions(-) rename src/lib/evas/canvas/{evas_out.eo => efl_canvas_output.eo} (77%) diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index f313861fef..10a6e64fc8 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -49,6 +49,7 @@ evas_eolian_pub_files = \ lib/evas/canvas/efl_input_pointer.eo \ lib/evas/canvas/efl_input_hold.eo \ lib/evas/canvas/efl_gfx_map.eo \ + lib/evas/canvas/efl_canvas_output.eo \ $(NULL) evas_eolian_legacy_files = \ @@ -56,7 +57,6 @@ evas_eolian_legacy_files = \ lib/evas/canvas/evas_table.eo \ lib/evas/canvas/evas_grid.eo \ lib/evas/canvas/evas_box.eo\ - lib/evas/canvas/evas_out.eo \ lib/evas/canvas/evas_text.eo \ lib/evas/canvas/evas_textgrid.eo \ lib/evas/canvas/evas_image.eo \ diff --git a/src/lib/evas/canvas/evas_out.eo b/src/lib/evas/canvas/efl_canvas_output.eo similarity index 77% rename from src/lib/evas/canvas/evas_out.eo rename to src/lib/evas/canvas/efl_canvas_output.eo index 44e00a4d04..31316ed472 100644 --- a/src/lib/evas/canvas/evas_out.eo +++ b/src/lib/evas/canvas/efl_canvas_output.eo @@ -1,9 +1,7 @@ import evas_types; -class Evas.Out (Efl.Object) +class Efl.Canvas.Output (Efl.Object) { - eo_prefix: evas_out; - legacy_prefix: evas_output; methods { @property view { set { @@ -23,6 +21,14 @@ class Evas.Out (Efl.Object) h: Evas.Coord; } } + lock { + [[Lock this output and will prevent rendering any buffer associated to it.]] + return: bool; + } + unlock { + [[Unlock this output and will rendering of this buffer during next call to evas_render.]] + return: bool; + } @property engine_info { set { [[Sets the engine specific output parameters for a given output.]] diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index 8eb3c6e520..8d5fa4f51c 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -305,7 +305,7 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, Evas_Public_Data *e) evas_event_callback_all_del(eo_e); evas_event_callback_cleanup(eo_e); - EINA_LIST_FREE(e->outputs, evo) evas_output_del(evo); + EINA_LIST_FREE(e->outputs, evo) efl_del(evo); if (e->engine.func) { diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c index b28ce65ddd..190d0939b4 100644 --- a/src/lib/evas/canvas/evas_out.c +++ b/src/lib/evas/canvas/evas_out.c @@ -5,26 +5,18 @@ #include "evas_cs2_private.h" #endif -#define MY_CLASS EVAS_OUT_CLASS -typedef struct _Evas_Out_Data Evas_Out_Data; -struct _Evas_Out_Data +#include "efl_canvas_output.eo.h" + +#define MY_CLASS EFL_CANVAS_OUTPUT_CLASS +typedef struct _Efl_Canvas_Output_Data Efl_Canvas_Output_Data; +struct _Efl_Canvas_Output_Data { void *info;/*, *context, *output;*/ Evas_Coord x, y, w, h; }; -EAPI Evas_Out * -evas_out_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - Evas_Object *eo_obj = efl_add(MY_CLASS, e); - return eo_obj; -} - EOLIAN static Eo * -_evas_out_efl_object_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat) +_efl_canvas_output_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Output_Data *eo_dat) { Eo *eo_parent = NULL; Evas_Public_Data *e; @@ -46,13 +38,13 @@ _evas_out_efl_object_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat) } EAPI void -evas_output_del(Evas_Out *evo) +efl_canvas_outputput_del(Efl_Canvas_Output *evo) { efl_unref(evo); } EOLIAN static void -_evas_out_efl_object_destructor(Eo *eo_obj, Evas_Out_Data *eo_dat) +_efl_canvas_output_efl_object_destructor(Eo *eo_obj, Efl_Canvas_Output_Data *eo_dat) { Eo *eo_parent = NULL; Evas_Public_Data *e; @@ -70,7 +62,7 @@ _evas_out_efl_object_destructor(Eo *eo_obj, Evas_Out_Data *eo_dat) } EOLIAN static void -_evas_out_view_set(Eo *eo_e, Evas_Out_Data *eo_dat, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) +_efl_canvas_output_view_set(Eo *eo_e, Efl_Canvas_Output_Data *eo_dat, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) { Eo *eo_parent = NULL; Evas_Public_Data *e; @@ -86,7 +78,7 @@ _evas_out_view_set(Eo *eo_e, Evas_Out_Data *eo_dat, Evas_Coord x, Evas_Coord y, } EOLIAN static void -_evas_out_view_get(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) +_efl_canvas_output_view_get(Eo *eo_e EINA_UNUSED, Efl_Canvas_Output_Data *eo_dat, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) { if (x) *x = eo_dat->x; if (y) *y = eo_dat->y; @@ -95,7 +87,7 @@ _evas_out_view_get(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat, Evas_Coord *x, E } EOLIAN static Eina_Bool -_evas_out_engine_info_set(Eo *eo_e, Evas_Out_Data *eo_dat, Evas_Engine_Info *info) +_efl_canvas_output_engine_info_set(Eo *eo_e, Efl_Canvas_Output_Data *eo_dat, Evas_Engine_Info *info) { Eo *eo_parent = NULL; Evas_Public_Data *e; @@ -105,14 +97,24 @@ _evas_out_engine_info_set(Eo *eo_e, Evas_Out_Data *eo_dat, Evas_Engine_Info *inf if (eo_dat->info != info) return EINA_FALSE; // XXX: handle setting of engine info here - + return EINA_TRUE; } EOLIAN static Evas_Engine_Info* -_evas_out_engine_info_get(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat) +_efl_canvas_output_engine_info_get(Eo *eo_e EINA_UNUSED, Efl_Canvas_Output_Data *eo_dat) { return eo_dat->info; } -#include "canvas/evas_out.eo.c" +static Eina_Bool +_efl_canvas_output_lock(Eo *obj, Efl_Canvas_Output_Data *pd) +{ +} + +static Eina_Bool +_efl_canvas_output_unlock(Eo *obj, Efl_Canvas_Output_Data *pd) +{ +} + +#include "canvas/efl_canvas_output.eo.c" diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index dfa048816a..5a10522682 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -52,7 +52,6 @@ #include "canvas/evas_box.eo.h" #include "canvas/evas_table.eo.h" #include "canvas/evas_grid.eo.h" -#include "canvas/evas_out.eo.h" #define RENDER_METHOD_INVALID 0x00000000