cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=386e06c73c091a4aaf10f654bfd12f82e61ea4b6
commit 386e06c73c091a4aaf10f654bfd12f82e61ea4b6 Author: Cedric BAIL <ced...@osg.samsung.com> Date: Wed Dec 7 15:44:43 2016 -0800 evas: do not rely on Evas canvas no longer passed during setup. --- src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c | 4 ++++ src/modules/evas/engines/fb/Evas_Engine_FB.h | 6 +++--- src/modules/evas/engines/fb/evas_engine.c | 10 ++++++---- .../evas/engines/software_x11/Evas_Engine_Software_X11.h | 6 ++++-- src/modules/evas/engines/software_x11/evas_engine.c | 4 ++-- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c b/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c index 0885162..9f0665c 100644 --- a/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c +++ b/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c @@ -745,6 +745,7 @@ ecore_evas_vnc_server_new(Ecore_Evas *ee, int port, const char *addr, x11_engine = (Evas_Engine_Info_Software_X11 *)engine; x11_engine->func.region_push_hook = _ecore_evas_vnc_server_draw; + x11_engine->push_to = ee->evas; engine_set = EINA_TRUE; key_info_get_func = _ecore_evas_vnc_server_x11_key_info_get; } @@ -757,6 +758,7 @@ ecore_evas_vnc_server_new(Ecore_Evas *ee, int port, const char *addr, fb_engine = (Evas_Engine_Info_FB *)engine; fb_engine->func.region_push_hook = _ecore_evas_vnc_server_draw; + fb_engine->push_to = ee->evas; engine_set = EINA_TRUE; key_info_get_func = _ecore_evas_vnc_server_fb_key_info_get; } @@ -864,6 +866,7 @@ ecore_evas_vnc_server_del(Ecore_Evas_Vnc_Server *server) x11_engine = (Evas_Engine_Info_Software_X11 *)engine; x11_engine->func.region_push_hook = NULL; + x11_engine->push_to = NULL; } #endif #ifdef BUILD_ENGINE_FB @@ -873,6 +876,7 @@ ecore_evas_vnc_server_del(Ecore_Evas_Vnc_Server *server) fb_engine = (Evas_Engine_Info_FB *)engine; fb_engine->func.region_push_hook = NULL; + fb_engine->push_to = NULL; } #endif diff --git a/src/modules/evas/engines/fb/Evas_Engine_FB.h b/src/modules/evas/engines/fb/Evas_Engine_FB.h index 12c5067..4c43096 100644 --- a/src/modules/evas/engines/fb/Evas_Engine_FB.h +++ b/src/modules/evas/engines/fb/Evas_Engine_FB.h @@ -21,9 +21,9 @@ struct _Evas_Engine_Info_FB Evas_Engine_Render_Mode render_mode; struct { - void (*region_push_hook)(Evas *e, int x, int y, int w, int h, const void *pixels); + void (*region_push_hook)(Evas *push_to, int x, int y, int w, int h, const void *pixels); } func; + + Evas *push_to; }; #endif - - diff --git a/src/modules/evas/engines/fb/evas_engine.c b/src/modules/evas/engines/fb/evas_engine.c index 79e670e..811cee6 100644 --- a/src/modules/evas/engines/fb/evas_engine.c +++ b/src/modules/evas/engines/fb/evas_engine.c @@ -87,9 +87,10 @@ evas_fb_region_push_hook_call(Outbuf *buf, int x, int y, int w, int h, /* internal engine routines */ static void * -_output_setup(Evas *eo_e, int w, int h, int rot, int vt, int dev, int refresh, +_output_setup(int w, int h, int rot, int vt, int dev, int refresh, void (*region_push_hook)(Evas *e, int x, int y, int w, int h, - const void *pixels)) + const void *pixels), + Evas *push_to) { Render_Engine *re; Outbuf *ob; @@ -105,7 +106,7 @@ _output_setup(Evas *eo_e, int w, int h, int rot, int vt, int dev, int refresh, if (!ob) goto on_error; ob->region_push_hook.cb = region_push_hook; - ob->region_push_hook.evas = eo_e; + ob->region_push_hook.evas = push_to; if (!evas_render_engine_software_generic_init(&re->generic, ob, NULL, evas_fb_outbuf_fb_get_rot, evas_fb_outbuf_fb_reconfigure, @@ -164,7 +165,8 @@ eng_setup(void *in, unsigned int w, unsigned int h) info->info.virtual_terminal, info->info.device_number, info->info.refresh, - info->func.region_push_hook); + info->func.region_push_hook, + info->push_to); } static void diff --git a/src/modules/evas/engines/software_x11/Evas_Engine_Software_X11.h b/src/modules/evas/engines/software_x11/Evas_Engine_Software_X11.h index f13e55f..0917f08 100644 --- a/src/modules/evas/engines/software_x11/Evas_Engine_Software_X11.h +++ b/src/modules/evas/engines/software_x11/Evas_Engine_Software_X11.h @@ -35,14 +35,16 @@ struct _Evas_Engine_Info_Software_X11 } info; /* engine specific function calls to query stuff about the destination */ - struct + struct { void *(*best_visual_get) (int backend, void *connection, int screen); unsigned int (*best_colormap_get) (int backend, void *connection, int screen); int (*best_depth_get) (int backend, void *connection, int screen); - void (*region_push_hook)(Evas *e, int x, int y, int w, int h, const void *pixels); + void (*region_push_hook)(Evas *push_to, int x, int y, int w, int h, const void *pixels); } func; + Evas *push_to; + unsigned char mask_changed : 1; /* non-blocking or blocking mode */ diff --git a/src/modules/evas/engines/software_x11/evas_engine.c b/src/modules/evas/engines/software_x11/evas_engine.c index 3adf0cf..8c8f6f7 100644 --- a/src/modules/evas/engines/software_x11/evas_engine.c +++ b/src/modules/evas/engines/software_x11/evas_engine.c @@ -362,7 +362,7 @@ eng_setup(void *in, unsigned int w, unsigned int h) re->outbuf_alpha_get = evas_software_xlib_outbuf_alpha_get; } re->generic.ob->region_push_hook.cb = info->func.region_push_hook; - re->generic.ob->region_push_hook.evas = eo_e; + re->generic.ob->region_push_hook.evas = info->push_to; _outbufs = eina_list_append(_outbufs, re->generic.ob); @@ -422,7 +422,7 @@ eng_update(void *data, void *in, unsigned int w, unsigned int h) { evas_render_engine_software_generic_update(&re->generic, ob, w, h); ob->region_push_hook.cb = info->func.region_push_hook; - ob->region_push_hook.evas = eo_e; + ob->region_push_hook.evas = info->push_to; } _outbufs = eina_list_append(_outbufs, re->generic.ob); --