From 3699ec6883a509510dba9956d250b740a8ac08db Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Mon, 17 Mar 2014 15:19:47 +0900 Subject: [PATCH] evas: remove RGBA_IMAGE_ALPHA_ONLY flags and use EVAS_COLORSPACE_GRY8 instead. --- src/lib/evas/common/evas_image_load.c | 1 - src/lib/evas/common/evas_image_main.c | 40 ++++++++++++---------- src/lib/evas/include/evas_common_private.h | 2 +- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/lib/evas/common/evas_image_load.c b/src/lib/evas/common/evas_image_load.c index 133f7399da..dc72986085 100644 --- a/src/lib/evas/common/evas_image_load.c +++ b/src/lib/evas/common/evas_image_load.c @@ -402,7 +402,6 @@ evas_common_load_rgba_image_data_from_file(Image_Entry *ie) if (!ie->info.module) return EVAS_LOAD_ERROR_GENERIC; // printf("load data [%p] %s %s\n", ie, ie->file, ie->key); - evas_image_load_func = ie->info.loader; evas_module_use(ie->info.module); diff --git a/src/lib/evas/common/evas_image_main.c b/src/lib/evas/common/evas_image_main.c index 5e1c8ae3c4..47a424f8e5 100644 --- a/src/lib/evas/common/evas_image_main.c +++ b/src/lib/evas/common/evas_image_main.c @@ -110,7 +110,7 @@ static const Evas_Cache2_Image_Func _evas_common_image_func2 = #endif static inline size_t -_evas_common_rgba_image_surface_size(unsigned int w, unsigned int h, Eina_Bool alpha_only) +_evas_common_rgba_image_surface_size(unsigned int w, unsigned int h, Evas_Colorspace cspace) { #define PAGE_SIZE (4 * 1024) #define HUGE_PAGE_SIZE (2 * 1024 * 1024) @@ -121,10 +121,13 @@ _evas_common_rgba_image_surface_size(unsigned int w, unsigned int h, Eina_Bool a #endif size_t siz; - if (alpha_only) - siz = w * h * sizeof(DATA8); - else - siz = w * h * sizeof(DATA32); + switch (cspace) + { + case EVAS_COLORSPACE_GRY8: siz = w * h * sizeof(DATA8); break; + case EVAS_COLORSPACE_ARGB8888: siz = w * h * sizeof(DATA32); break; + default: + return -1; + } if (siz < PAGE_SIZE) return siz; @@ -134,14 +137,14 @@ _evas_common_rgba_image_surface_size(unsigned int w, unsigned int h, Eina_Bool a } static void * -_evas_common_rgba_image_surface_mmap(unsigned int w, unsigned int h, Eina_Bool alpha_only) +_evas_common_rgba_image_surface_mmap(unsigned int w, unsigned int h, Evas_Colorspace cspace) { size_t siz; #if defined (HAVE_SYS_MMAN_H) && (!defined (_WIN32)) void *r = MAP_FAILED; #endif - siz = _evas_common_rgba_image_surface_size(w, h, alpha_only); + siz = _evas_common_rgba_image_surface_size(w, h, cspace); #if defined (HAVE_SYS_MMAN_H) && (!defined (_WIN32)) #ifndef MAP_HUGETLB @@ -165,12 +168,12 @@ _evas_common_rgba_image_surface_mmap(unsigned int w, unsigned int h, Eina_Bool a } static void -_evas_common_rgba_image_surface_munmap(void *data, unsigned int w, unsigned int h, Eina_Bool alpha_only) +_evas_common_rgba_image_surface_munmap(void *data, unsigned int w, unsigned int h, Evas_Colorspace cspace) { #if defined (HAVE_SYS_MMAN_H) && (!defined (_WIN32)) size_t siz; - siz = _evas_common_rgba_image_surface_size(w, h, alpha_only); + siz = _evas_common_rgba_image_surface_size(w, h, cspace); if (siz < PAGE_SIZE) free(data); else @@ -373,7 +376,7 @@ evas_common_rgba_image_unload(Image_Entry *ie) { _evas_common_rgba_image_surface_munmap(im->image.data, ie->allocated.w, ie->allocated.h, - (im->flags & RGBA_IMAGE_ALPHA_ONLY)); + ie->space); #ifdef SURFDBG surfs = eina_list_remove(surfs, ie); #endif @@ -445,21 +448,21 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned { _evas_common_rgba_image_surface_munmap(im->image.data, ie->allocated.w, ie->allocated.h, - (im->flags & RGBA_IMAGE_ALPHA_ONLY)); + ie->space); #ifdef SURFDBG surfs = eina_list_remove(surfs, ie); -#endif +#endif } - im->image.data = _evas_common_rgba_image_surface_mmap(w, h, (im->flags & RGBA_IMAGE_ALPHA_ONLY)); + im->image.data = _evas_common_rgba_image_surface_mmap(w, h, ie->space); if (!im->image.data) return -1; ie->allocated.w = w; ie->allocated.h = h; #ifdef SURFDBG surfs = eina_list_append(surfs, ie); -#endif +#endif #ifdef HAVE_VALGRIND size_t siz = 0; - siz = _evas_common_rgba_image_surface_size(w, h, (im->flags & RGBA_IMAGE_ALPHA_ONLY)); + siz = _evas_common_rgba_image_surface_size(w, h, ie->space); # ifdef VALGRIND_MAKE_READABLE VALGRIND_MAKE_READABLE(im->image.data, siz); # else @@ -508,7 +511,7 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie) { _evas_common_rgba_image_surface_munmap(im->image.data, ie->allocated.w, ie->allocated.h, - (im->flags & RGBA_IMAGE_ALPHA_ONLY)); + ie->space); #ifdef SURFDBG surfs = eina_list_remove(surfs, ie); #endif @@ -626,7 +629,7 @@ evas_common_image_surface_alpha_tiles_calc(RGBA_Surface *is, int tsize) if (is->spans) return; if (!is->im->cache_entry.flags.alpha) return; /* FIXME: dont handle alpha only images yet */ - if ((is->im->flags & RGBA_IMAGE_ALPHA_ONLY)) return; + if (is->im->space != EVAS_COLORSPACE_GRY8) return; if (tsize < 0) tsize = 0; is->spans = calloc(1, sizeof(RGBA_Image_Span *) * is->h); if (!is->spans) return; @@ -745,6 +748,7 @@ evas_common_image_colorspace_normalize(RGBA_Image *im) switch (im->cache_entry.space) { case EVAS_COLORSPACE_ARGB8888: + case EVAS_COLORSPACE_GRY8: if (im->image.data != im->cs.data) { #ifdef EVAS_CSERVE2 @@ -756,7 +760,7 @@ evas_common_image_colorspace_normalize(RGBA_Image *im) _evas_common_rgba_image_surface_munmap(im->image.data, im->cache_entry.allocated.w, im->cache_entry.allocated.h, - (im->flags & RGBA_IMAGE_ALPHA_ONLY)); + im->cache_entry.space); #ifdef SURFDBG surfs = eina_list_remove(surfs, im); #endif diff --git a/src/lib/evas/include/evas_common_private.h b/src/lib/evas/include/evas_common_private.h index b376cd3c82..1470ca5e6a 100644 --- a/src/lib/evas/include/evas_common_private.h +++ b/src/lib/evas/include/evas_common_private.h @@ -454,7 +454,7 @@ typedef enum _RGBA_Image_Flags /* RGBA_IMAGE_HAS_ALPHA = (1 << 0), */ RGBA_IMAGE_IS_DIRTY = (1 << 1), RGBA_IMAGE_INDEXED = (1 << 2), - RGBA_IMAGE_ALPHA_ONLY = (1 << 3), + /* RGBA_IMAGE_ALPHA_ONLY = (1 << 3), */ RGBA_IMAGE_ALPHA_TILES = (1 << 4), /* RGBA_IMAGE_ALPHA_SPARSE = (1 << 5), */ /* RGBA_IMAGE_LOADED = (1 << 6), */