From 34988a54e42f62caca369aaa1564f0267ef1b287 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 11 Nov 2011 07:47:25 +0000 Subject: [PATCH] ooh aznd other part of dyn img patch goes in. SVN revision: 65053 --- legacy/evas/src/modules/engines/gl_x11/evas_engine.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 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 52e1ebd..fe2eba3 100644 --- a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c @@ -2404,14 +2404,21 @@ eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data, i if ((im->tex) && (im->tex->pt) && (im->tex->pt->dyn.img) && (im->cs.space == EVAS_COLORSPACE_ARGB8888)) { + if (im->tex->pt->dyn.checked_out > 0) + { + im->tex->pt->dyn.checked_out++; + *image_data = im->tex->pt->dyn.data; + if (err) *err = EVAS_LOAD_ERROR_NONE; + return im; + } *image_data = im->tex->pt->dyn.data = glsym_eglMapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); if (!im->tex->pt->dyn.data) { - glsym_eglDestroyImage(re->win->egl_disp, im->tex->pt->dyn.img); im->tex->pt->dyn.img = NULL; GLERR(__FUNCTION__, __FILE__, __LINE__, ""); } + im->tex->pt->dyn.checked_out++; if (err) *err = EVAS_LOAD_ERROR_NONE; return im; @@ -2498,11 +2505,15 @@ eng_image_data_put(void *data, void *image, DATA32 *image_data) { int w, h; + if (im->tex->pt->dyn.data == image_data) + { + im->tex->pt->dyn.checked_out--; #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) - 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 - if (im->tex->pt->dyn.data == image_data) - return image; + return image; + } w = im->im->cache_entry.w; h = im->im->cache_entry.h; -- 2.7.4