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 --- .../src/modules/engines/gl_x11/evas_engine.c | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 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 52e1ebd72a..fe2eba31be 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 defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) - glsym_eglUnmapImageSEC(re->win->egl_disp, im->tex->pt->dyn.img); -#endif if (im->tex->pt->dyn.data == image_data) - return image; + { + 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); +#endif + return image; + } w = im->im->cache_entry.w; h = im->im->cache_entry.h;