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);

-- 


Reply via email to