From 209f3032898fda22cc31f8b4a0b185004b41e15a Mon Sep 17 00:00:00 2001 From: raster Date: Tue, 28 Feb 2012 11:55:14 +0000 Subject: [PATCH] From: Subject: image data get/set pairing issue I found a bug about pairing evas_object_image_data_get/set(eng_image_data_get/put). It was added to count checked_out for paring eglMapImageSEC/eglUnmapImageSEC. In case of calling evas_object_image_data_set() twice after calling evas_object_image_data_get(), dyn.checked_out has -1. Then, if evas_object_image_data_get() and evas_object_image_data_set() is call, it can't call eglUnmapImageSEC(). If dyn.checked_out has minus, it can make some problem. So, I fixed this problem. Please find enclosed patch file and let me know if I misunderstood. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@68504 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/modules/engines/gl_x11/evas_engine.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/engines/gl_x11/evas_engine.c b/src/modules/engines/gl_x11/evas_engine.c index ddb00d3..06348b4 100644 --- a/src/modules/engines/gl_x11/evas_engine.c +++ b/src/modules/engines/gl_x11/evas_engine.c @@ -2540,11 +2540,15 @@ eng_image_data_put(void *data, void *image, DATA32 *image_data) if (im->tex->pt->dyn.data == image_data) { - im->tex->pt->dyn.checked_out--; + if (im->tex->pt->dyn.checked_out > 0) + { + im->tex->pt->dyn.checked_out--; #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) - if (im->tex->pt->dyn.checked_out == 0) - glsym_eglUnmapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); + if (im->tex->pt->dyn.checked_out == 0) + glsym_eglUnmapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); #endif + } + return image; } -- 2.7.4