jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=84cb06784e6491277f3303276b1339c0207fca64
commit 84cb06784e6491277f3303276b1339c0207fca64 Author: Wonsik Jung <sid...@samsung.com> Date: Wed Nov 11 13:22:25 2015 +0900 Evas sw_generic/x11: Fix calls to native_bind_cb/unbind_cb Summary: In Evas-SW-Generic/X11, native_unbind_cb is not called sometimes, although native_bind_cb was called. Some native surface's cases, both native_bind_cb and native_unbind_cb should be called for mapping and unmapping, eg. with tbm_surface. @fix Test Plan: Evas Native Surface with pixmap sample. Evas Native Surface with tbm(this sample can work in Tize Device) elementary_test Reviewers: raster, jpeg, cedric, spacegrapher Subscribers: JoogabYun, scholb.kim, dkdk Differential Revision: https://phab.enlightenment.org/D3317 --- src/modules/evas/engines/software_generic/evas_engine.c | 13 +++++++++++-- src/modules/evas/engines/software_x11/evas_engine.c | 2 ++ src/modules/evas/engines/software_x11/evas_xcb_image.c | 2 ++ src/modules/evas/engines/software_x11/evas_xlib_image.c | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 9570a51..ecd96f18 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -1956,6 +1956,7 @@ eng_image_draw(void *data EINA_UNUSED, void *context, void *surface, void *image if (do_async) { + Eina_Bool ret; if (!evas_common_rgba_image_scalecache_prepare(image, surface, context, smooth, src_x, src_y, src_w, src_h, dst_x, dst_y, dst_w, dst_h)) @@ -1968,15 +1969,23 @@ eng_image_draw(void *data EINA_UNUSED, void *context, void *surface, void *image else #endif evas_cache_image_load_data(&im->cache_entry); - if (!im->cache_entry.flags.loaded) return EINA_FALSE; + if (!im->cache_entry.flags.loaded) + { + if (im->native.func.unbind) + im->native.func.unbind(data, image); + return EINA_FALSE; + } } } - return evas_common_rgba_image_scalecache_do_cbs(image, surface, + ret = evas_common_rgba_image_scalecache_do_cbs(image, surface, context, smooth, src_x, src_y, src_w, src_h, dst_x, dst_y, dst_w, dst_h, _image_thr_cb_sample, _image_thr_cb_smooth); + if (im->native.func.unbind) + im->native.func.unbind(data, image); + return ret; } #ifdef BUILD_PIPE_RENDER else if ((cpunum > 1)) diff --git a/src/modules/evas/engines/software_x11/evas_engine.c b/src/modules/evas/engines/software_x11/evas_engine.c index e97f0f5..72ee1e7 100644 --- a/src/modules/evas/engines/software_x11/evas_engine.c +++ b/src/modules/evas/engines/software_x11/evas_engine.c @@ -641,6 +641,7 @@ _native_evasgl_free(void *data EINA_UNUSED, void *image) im->native.data = NULL; im->native.func.data = NULL; im->native.func.bind = NULL; + im->native.func.unbind = NULL; im->native.func.free = NULL; //im->image.data = NULL; free(n); @@ -740,6 +741,7 @@ eng_image_native_set(void *data EINA_UNUSED, void *image, void *native) im->native.func.free = _native_evasgl_free; im->native.func.data = NULL; im->native.func.bind = NULL; + im->native.func.unbind = NULL; } } diff --git a/src/modules/evas/engines/software_x11/evas_xcb_image.c b/src/modules/evas/engines/software_x11/evas_xcb_image.c index d15dbe3..597a8c6 100644 --- a/src/modules/evas/engines/software_x11/evas_xcb_image.c +++ b/src/modules/evas/engines/software_x11/evas_xcb_image.c @@ -68,6 +68,7 @@ _native_cb_free(void *data EINA_UNUSED, void *image) im->native.data = NULL; im->native.func.data = NULL; im->native.func.bind = NULL; + im->native.func.unbind = NULL; im->native.func.free = NULL; im->image.data = NULL; @@ -116,6 +117,7 @@ evas_xcb_image_native_set(void *data, void *image, void *native) im->native.data = n; im->native.func.data = NULL; im->native.func.bind = _native_cb_bind; + im->native.func.unbind = NULL; im->native.func.free = _native_cb_free; _evas_xcb_image_update(data, image, 0, 0, w, h); diff --git a/src/modules/evas/engines/software_x11/evas_xlib_image.c b/src/modules/evas/engines/software_x11/evas_xlib_image.c index 615d11a..9472977 100644 --- a/src/modules/evas/engines/software_x11/evas_xlib_image.c +++ b/src/modules/evas/engines/software_x11/evas_xlib_image.c @@ -60,6 +60,7 @@ _native_free_cb(void *data EINA_UNUSED, void *image) im->native.data = NULL; im->native.func.data = NULL; im->native.func.bind = NULL; + im->native.func.unbind = NULL; im->native.func.free = NULL; im->image.data = NULL; free(n); --