jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=fb3368111d9207e7e7cd6333c296d9b63356fa1f

commit fb3368111d9207e7e7cd6333c296d9b63356fa1f
Author: Minkyoung Kim <mer....@samsung.com>
Date:   Wed Mar 30 14:01:18 2016 +0900

    evas: Move engine data to native.
    
    Summary:
    native_xx_cbs must be independent to evas render engine.
    This was applied to only gl_x11 backend.
    Propagate to others.
    
    Test Plan: Tizen3.0 Mobile
    
    Reviewers: wonsik, spacegrapher, jpeg
    
    Reviewed By: jpeg
    
    Subscribers: cedric, dkdk
    
    Differential Revision: https://phab.enlightenment.org/D3840
---
 src/modules/evas/engines/gl_drm/evas_engine.c      | 17 +++++++-------
 src/modules/evas/engines/gl_generic/evas_engine.c  |  9 +++-----
 src/modules/evas/engines/wayland_egl/evas_engine.c | 27 +++++++++++++---------
 3 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c 
b/src/modules/evas/engines/gl_drm/evas_engine.c
index 3973a5f..2550873 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.c
+++ b/src/modules/evas/engines/gl_drm/evas_engine.c
@@ -656,29 +656,26 @@ _native_cb_unbind(void *data EINA_UNUSED, void *image)
 }
 
 static void
-_native_cb_free(void *data, void *image)
+_native_cb_free(void *data EINA_UNUSED, void *image)
 {
-   Render_Engine *re;
-   Outbuf *ob;
    Evas_GL_Image *img;
    Native *n;
    uint32_t texid;
    void *wlid;
 
-   if (!(re = (Render_Engine *)data)) return;
    if (!(img = image)) return;
    if (!(n = img->native.data)) return;
-   if (!(ob = eng_get_ob(re))) return;
+   if (!(img->native.shared)) return;
 
    if (n->ns.type == EVAS_NATIVE_SURFACE_WL)
      {
         wlid = (void*)n->ns_data.wl_surface.wl_buf;
-        eina_hash_del(ob->gl_context->shared->native_wl_hash, &wlid, img);
+        eina_hash_del(img->native.shared->native_wl_hash, &wlid, img);
         if (n->ns_data.wl_surface.surface)
           {
              if (glsym_eglDestroyImage)
                {
-                  glsym_eglDestroyImage(ob->egl.disp, 
n->ns_data.wl_surface.surface);
+                  glsym_eglDestroyImage(img->native.disp, 
n->ns_data.wl_surface.surface);
                   if (eglGetError() != EGL_SUCCESS)
                     ERR("eglDestroyImage() failed.");
                }
@@ -689,7 +686,7 @@ _native_cb_free(void *data, void *image)
    else if (n->ns.type == EVAS_NATIVE_SURFACE_OPENGL)
      {
         texid = n->ns.data.opengl.texture_id;
-        eina_hash_del(ob->gl_context->shared->native_tex_hash, &texid, img);
+        eina_hash_del(img->native.shared->native_tex_hash, &texid, img);
      }
 
    img->native.data = NULL;
@@ -1219,6 +1216,8 @@ eng_image_native_set(void *data, void *image, void 
*native)
                   //img->native.yinvert = yinvert;
                   img->native.yinvert = 1;
                   img->native.loose = 0;
+                  img->native.disp = ob->egl.disp;
+                  img->native.shared = ob->gl_context->shared;
                   img->native.data = n;
                   img->native.func.data = re;
                   img->native.func.bind = _native_cb_bind;
@@ -1245,6 +1244,8 @@ eng_image_native_set(void *data, void *image, void 
*native)
 
                   img->native.yinvert = 0;
                   img->native.loose = 0;
+                  img->native.disp = ob->egl.disp;
+                  img->native.shared = ob->gl_context->shared;
                   img->native.data = n;
                   img->native.func.data = re;
                   img->native.func.bind = _native_cb_bind;
diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c 
b/src/modules/evas/engines/gl_generic/evas_engine.c
index c46fb75..45682ef 100644
--- a/src/modules/evas/engines/gl_generic/evas_engine.c
+++ b/src/modules/evas/engines/gl_generic/evas_engine.c
@@ -323,20 +323,16 @@ _native_unbind_cb(void *data EINA_UNUSED, void *image)
 }
 
 static void
-_native_free_cb(void *data, void *image)
+_native_free_cb(void *data EINA_UNUSED, void *image)
 {
-  Evas_Engine_GL_Context *gl_context;
-  Render_Engine_GL_Generic *re = data;
   Evas_GL_Image *im = image;
   Evas_Native_Surface *n = im->native.data;
   uint32_t texid;
 
   if (n->type == EVAS_NATIVE_SURFACE_OPENGL)
     {
-       gl_context = re->window_gl_context_get(re->software.ob);
-
        texid = n->data.opengl.texture_id;
-       eina_hash_del(gl_context->shared->native_tex_hash, &texid, im);
+       eina_hash_del(im->native.shared->native_tex_hash, &texid, im);
     }
   im->native.data        = NULL;
   im->native.func.data   = NULL;
@@ -464,6 +460,7 @@ eng_image_native_set(void *data, void *image, void *native)
 
               im->native.yinvert     = 0;
               im->native.loose       = 0;
+              im->native.shared      = gl_context->shared;
               im->native.data        = n;
               im->native.func.data   = re;
               im->native.func.bind   = _native_bind_cb;
diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c 
b/src/modules/evas/engines/wayland_egl/evas_engine.c
index 0aab3af..d6ee043 100644
--- a/src/modules/evas/engines/wayland_egl/evas_engine.c
+++ b/src/modules/evas/engines/wayland_egl/evas_engine.c
@@ -894,29 +894,26 @@ _native_cb_unbind(void *data EINA_UNUSED, void *image)
 }
 
 static void
-_native_cb_free(void *data, void *image)
+_native_cb_free(void *data EINA_UNUSED, void *image)
 {
-   Render_Engine *re;
-   Outbuf *ob;
    Evas_GL_Image *img;
    Native *n;
    uint32_t texid;
    void *wlid;
 
-   if (!(re = (Render_Engine *)data)) return;
    if (!(img = image)) return;
    if (!(n = img->native.data)) return;
-   if (!(ob = eng_get_ob(re))) return;
+   if (!(img->native.shared)) return;
 
    if (n->ns.type == EVAS_NATIVE_SURFACE_WL)
      {
         wlid = (void*)n->ns_data.wl_surface.wl_buf;
-        eina_hash_del(ob->gl_context->shared->native_wl_hash, &wlid, img);
+        eina_hash_del(img->native.shared->native_wl_hash, &wlid, img);
         if (n->ns_data.wl_surface.surface)
           {
              if (glsym_eglDestroyImage)
                {
-                  glsym_eglDestroyImage(ob->egl_disp, 
n->ns_data.wl_surface.surface);
+                  glsym_eglDestroyImage(img->native.disp, 
n->ns_data.wl_surface.surface);
                   if (eglGetError() != EGL_SUCCESS)
                     ERR("eglDestroyImage() failed.");
                }
@@ -927,22 +924,22 @@ _native_cb_free(void *data, void *image)
    else if (n->ns.type == EVAS_NATIVE_SURFACE_OPENGL)
      {
         texid = n->ns.data.opengl.texture_id;
-        eina_hash_del(ob->gl_context->shared->native_tex_hash, &texid, img);
+        eina_hash_del(img->native.shared->native_tex_hash, &texid, img);
      }
   else if (n->ns.type == EVAS_NATIVE_SURFACE_EVASGL)
     {
-      eina_hash_del(eng_get_ob(re)->gl_context->shared->native_evasgl_hash, 
&n->ns_data.evasgl.surface, img);
+      eina_hash_del(img->native.shared->native_evasgl_hash, 
&n->ns_data.evasgl.surface, img);
     }
   else if (n->ns.type == EVAS_NATIVE_SURFACE_TBM)
     {
-       eina_hash_del(ob->gl_context->shared->native_tbm_hash, 
&n->ns_data.tbm.buffer, img);
+       eina_hash_del(img->native.shared->native_tbm_hash, 
&n->ns_data.tbm.buffer, img);
 #ifdef GL_GLES
       if (n->ns_data.tbm.surface)
         {
            int err;
            if (glsym_eglDestroyImage)
              {
-                glsym_eglDestroyImage(ob->egl_disp,
+                glsym_eglDestroyImage(img->native.disp,
                                       n->ns_data.tbm.surface);
                 if ((err = eglGetError()) != EGL_SUCCESS)
                   {
@@ -1263,6 +1260,8 @@ eng_image_native_set(void *data, void *image, void 
*native)
                   //img->native.yinvert = yinvert;
                   img->native.yinvert = 1;
                   img->native.loose = 0;
+                  img->native.disp = ob->egl_disp;
+                  img->native.shared = ob->gl_context->shared;
                   img->native.data = n;
                   img->native.func.data = re;
                   img->native.func.bind = _native_cb_bind;
@@ -1288,6 +1287,8 @@ eng_image_native_set(void *data, void *image, void 
*native)
 
                   img->native.yinvert = 0;
                   img->native.loose = 0;
+                  img->native.disp = ob->egl_disp;
+                  img->native.shared = ob->gl_context->shared;
                   img->native.data = n;
                   img->native.func.data = re;
                   img->native.func.bind = _native_cb_bind;
@@ -1315,6 +1316,8 @@ eng_image_native_set(void *data, void *image, void 
*native)
                n->ns_data.evasgl.surface = ns->data.evasgl.surface;
                img->native.yinvert     = 0;
                img->native.loose       = 0;
+               img->native.disp        = ob->egl_disp;
+               img->native.shared      = ob->gl_context->shared;
                img->native.data        = n;
                img->native.func.data   = re;
                img->native.func.bind   = _native_cb_bind;
@@ -1352,6 +1355,8 @@ eng_image_native_set(void *data, void *image, void 
*native)
                  ERR("eglCreateImage() for %p failed", buffer);
                img->native.yinvert     = 1;
                img->native.loose       = 0;
+               img->native.disp        = ob->egl_disp;
+               img->native.shared      = ob->gl_context->shared;
                img->native.data        = n;
                img->native.func.data   = re;
                img->native.func.bind   = _native_cb_bind;

-- 


Reply via email to