From cf569fb2bf744cd485e7ada9a8e94f3eed2b3ab9 Mon Sep 17 00:00:00 2001 From: "om101.woo" 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. SVN revision: 68504 --- legacy/evas/src/modules/engines/gl_x11/evas_engine.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c index ddb00d35ee..06348b416b 100644 --- a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c +++ b/legacy/evas/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; }