Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/lib/engines/common Modified Files: Makefile.am evas_image_load.c evas_image_main.c evas_pipe.c Added Files: evas_image_data.c Log Message: cedric's sdl patch. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/Makefile.am,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- Makefile.am 21 Mar 2007 02:15:29 -0000 1.24 +++ Makefile.am 16 Jul 2007 07:25:33 -0000 1.25 @@ -45,6 +45,7 @@ evas_image_load.c \ evas_image_save.c \ evas_image_main.c \ +evas_image_data.c \ evas_line_main.c \ evas_polygon_main.c \ evas_rectangle_main.c \ =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_image_load.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -3 -r1.40 -r1.41 --- evas_image_load.c 22 Apr 2007 07:01:44 -0000 1.40 +++ evas_image_load.c 16 Jul 2007 07:25:33 -0000 1.41 @@ -3,58 +3,50 @@ extern Evas_List *evas_modules; -EAPI RGBA_Image * -evas_common_load_image_from_file(const char *file, const char *key, RGBA_Image_Loadopts *lo) +struct ext_loader_s { + const char* extention; + const char* loader; +}; + +static struct ext_loader_s loaders[] = { + { "png", "png" }, + { "jpg", "jpeg" }, + { "jpeg", "jpeg" }, + { "jfif", "jpeg" }, + { "eet", "eet" }, + { "edj", "eet" }, + { "eap", "eet" }, + { "edb", "edb" }, + { "xpm", "xpm" }, + { "tiff", "tiff" }, + { "tif", "tiff" }, + { "svg", "svg" }, + { "svgz", "svg" } +}; + +EAPI int +evas_common_load_image_module_from_file(RGBA_Image *im) { Evas_Image_Load_Func *evas_image_load_func = NULL; - Evas_List *l; - RGBA_Image *im; - char *p; - char *loader = NULL; - Evas_Module *em; - struct stat st; - - if (file == NULL) return NULL; - - im = evas_common_image_find(file, key, 0, lo); - if (im) - { - evas_common_image_ref(im); - return im; - } - if (stat(file, &st) < 0) return NULL; - - im = evas_common_image_new(); - if (!im) return NULL; - - im->timestamp = st.st_mtime; - im->laststat = time(NULL); - - if (lo) im->load_opts = *lo; - - p = strrchr(file, '.'); - if (p) - { - p++; - if (!strcasecmp(p, "png")) - loader = "png"; - else if ((!strcasecmp(p, "jpg")) || (!strcasecmp(p, "jpeg")) || - (!strcasecmp(p, "jfif"))) - loader = "jpeg"; - else if ((!strcasecmp(p, "eet")) || (!strcasecmp(p, "edj")) || - (!strcasecmp(p, "eap"))) - loader = "eet"; - else if (!strcasecmp(p, "edb")) - loader = "edb"; - else if ((!strcasecmp(p, "tiff")) || (!strcasecmp(p, "tif"))) - loader = "tiff"; - else if (!strcasecmp(p, "xpm")) - loader = "xpm"; - else if (!strcasecmp(p, "svg")) - loader = "svg"; - else if (!strcasecmp(p, "svgz")) - loader = "svg"; + const char *loader = NULL; + char *dot; + Evas_List *l; + Evas_Module *em; + int i; + + dot = strrchr (im->info.file, '.'); + if (dot) + { + for (i = 0, ++dot; i < (sizeof (loaders) / sizeof (struct ext_loader_s)); ++i) + { + if (!strcasecmp (dot, loaders[i].extention)) + { + loader = loaders[i].loader; + break; + } + } } + if (loader) { em = evas_module_find_type(EVAS_MODULE_TYPE_IMAGE_LOADER, loader); @@ -64,7 +56,7 @@ { evas_module_use(em); evas_image_load_func = em->functions; - if (evas_image_load_func->file_head(im, file, key)) + if (evas_image_load_func->file_head(im, im->info.file, im->info.key)) goto ok; } } @@ -77,7 +69,7 @@ if (!evas_module_load(em)) continue; evas_image_load_func = em->functions; evas_module_use(em); - if (evas_image_load_func->file_head(im, file, key)) + if (evas_image_load_func->file_head(im, im->info.file, im->info.key)) { if (evas_modules != l) { @@ -86,33 +78,30 @@ goto ok; } } - - evas_common_image_free(im); - return NULL; - ok: + evas_common_image_delete(im); + return -1; + + ok: im->info.module = (void *)em; im->info.loader = (void *)evas_image_load_func; - im->info.file = (char *)evas_stringshare_add(file); - if (key) im->info.key = (char *)evas_stringshare_add(key); evas_module_ref((Evas_Module *)im->info.module); - evas_common_image_ref(im); - return im; + return 0; } EAPI void evas_common_load_image_data_from_file(RGBA_Image *im) { Evas_Image_Load_Func *evas_image_load_func = NULL; - - if (im->image->data) return; + + if ((im->flags & RGBA_IMAGE_LOADED) == RGBA_IMAGE_LOADED) return ; if (!im->info.module) return; evas_image_load_func = im->info.loader; evas_module_use((Evas_Module *)im->info.module); if (!evas_image_load_func->file_data(im, im->info.file, im->info.key)) { - evas_common_image_surface_alloc(im->image); + if (!im->image->data) evas_common_image_surface_alloc(im->image); if (!im->image->data) { const DATA32 pixel = 0xffffffff; @@ -128,4 +117,5 @@ evas_module_unref((Evas_Module *)im->info.module); im->info.module = NULL; } + im->flags |= RGBA_IMAGE_LOADED; } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_image_main.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- evas_image_main.c 10 Jul 2007 00:13:26 -0000 1.50 +++ evas_image_main.c 16 Jul 2007 07:25:33 -0000 1.51 @@ -9,70 +9,50 @@ #include <memcheck.h> #endif -static Evas_Hash * images = NULL; -static Evas_Object_List * cache = NULL; -static int cache_size = 0; -static int cache_usage = 0; +static Evas_Cache_Image * eci = NULL; +static int reference = 0; -static RGBA_Image *evas_rgba_line_buffer = NULL; +/* static RGBA_Image *evas_rgba_line_buffer = NULL; */ #define EVAS_RGBA_LINE_BUFFER_MIN_LEN 256 #define EVAS_RGBA_LINE_BUFFER_MAX_LEN 2048 -static RGBA_Image *evas_alpha_line_buffer = NULL; +/* static RGBA_Image *evas_alpha_line_buffer = NULL; */ #define EVAS_ALPHA_LINE_BUFFER_MIN_LEN 256 #define EVAS_ALPHA_LINE_BUFFER_MAX_LEN 2048 -#if 0 -int -image_debug_hash_cb(Evas_Hash *hash, const char *key, void *data, void *fdata) -{ - RGBA_Image *im; +/* The cache is doing the allocation and deallocation, you must just do the rest. */ +static void _evas_common_image_unload(RGBA_Image* im); - im = data; - printf(" [%i] %3ix%3i %6i %6i [%2x %2x] %i %s\n", - im->references, - im->image->w, im->image->h, - im->image->w * im->image->h * 4, - evas_common_image_ram_usage(im), - im->flags & RGBA_IMAGE_IS_DIRTY, - im->flags & RGBA_IMAGE_INDEXED, - im->info.format, - im->info.file); -} +static void _evas_common_image_dirty_region(RGBA_Image* im, int x, int y, int w, int h); -static void -image_debug(void) -{ - Evas_Object_List *l; - - printf("active images:\n"); - evas_hash_foreach(images, image_debug_hash_cb, NULL); - printf("cache size: %i\n", cache_size); - printf("cache usage: %i\n", cache_usage); - printf("cached images:\n"); - for (l = cache; l; l = l->next) - { - RGBA_Image *im; - - im = l; - printf(" [%i] %3ix%3i %6i %6i [%2x %2x] %i %s\n", - im->references, - im->image->w, im->image->h, - im->image->w * im->image->h * 4, - evas_common_image_ram_usage(im), - im->flags & RGBA_IMAGE_IS_DIRTY, - im->flags & RGBA_IMAGE_INDEXED, - im->info.format, - im->info.file); - } -} -#endif +/* Only called when references > 0. Need to provide a fresh copie of im. */ +/* The destination surface does have a surface, but no allocated pixel data. */ +static int _evas_common_image_dirty(RGBA_Image* dst, const RGBA_Image* src); + +static const Evas_Cache_Image_Func _evas_common_image_func = +{ + .constructor = evas_common_load_image_module_from_file, + .destructor = _evas_common_image_unload, + .dirty_region = _evas_common_image_dirty_region, + .dirty = _evas_common_image_dirty, + .copied_data = evas_common_image_from_copied_data, + .color_space = evas_common_image_colorspace_set, + .data = evas_common_image_from_data, + .size_set = evas_common_image_size_set, + .load = evas_common_load_image_data_from_file, + .mem_size_get = evas_common_image_ram_usage, + .debug = NULL +}; EAPI void evas_common_image_init(void) { + if (!eci) + eci = evas_cache_image_init(&_evas_common_image_func); + reference++; + #ifdef BUILD_LOADER_EET eet_init(); #endif @@ -81,11 +61,69 @@ EAPI void evas_common_image_shutdown(void) { + if (--reference == 0) + { + evas_cache_image_shutdown(eci); + eci = NULL; + } + #ifdef BUILD_LOADER_EET eet_shutdown(); #endif } +static void +_evas_common_image_unload(RGBA_Image* im) +{ +} + +static void +_evas_common_image_dirty_region(RGBA_Image* im, int x, int y, int w, int h) +{ +} + +void +evas_common_image_delete(RGBA_Image* im) +{ + if ((im->cs.data) && (im->image->data)) + { + if (im->cs.data != im->image->data) + { + if (!im->cs.no_free) free(im->cs.data); + } + } + else if (im->cs.data) + { + if (!im->cs.no_free) free(im->cs.data); + } + + im->cs.data = NULL; + evas_common_pipe_free(im); + if (im->image) evas_common_image_surface_free(im->image); + if (im->info.file) evas_stringshare_del(im->info.file); + if (im->info.key) evas_stringshare_del(im->info.key); + if (im->info.module) evas_module_unref((Evas_Module *)im->info.module); + /* memset the image to 0x99 because i recently saw a segv where an + * seemed to be used BUT its contents were wrong - it looks like it was + * overwritten by something from efreet - as there was an execute command + * for a command there and some other signs - but to make sure, I am + * going to empty this struct out in case this happens again so i know + * that something else is overwritign this struct - or not */ + memset(im, 0x99, sizeof(im)); + free(im); +} + +/* Only called when references > 0. Need to provide a fresh copie of im. */ +static int +_evas_common_image_dirty(RGBA_Image* dst, const RGBA_Image* src) +{ + evas_common_image_colorspace_normalize(dst); + evas_common_blit_rectangle(src, dst, 0, 0, src->image->w, src->image->h, 0, 0); + evas_common_cpu_end_opt(); + + return 0; +} + #if 0 void evas_common_image_surface_alpha_tiles_calc(RGBA_Surface *is, int tsize) @@ -174,6 +212,8 @@ { size_t siz = 0; + if (is->data) return ; + if (is->im->flags & RGBA_IMAGE_ALPHA_ONLY) siz = is->w * is->h * sizeof(DATA8); else @@ -206,7 +246,7 @@ im->image = evas_common_image_surface_new(im); if (!im->image) { - evas_common_image_free(im); + evas_common_image_delete(im); return NULL; } im->image->w = w; @@ -214,7 +254,7 @@ evas_common_image_surface_alloc(im->image); if (!im->image->data) { - evas_common_image_free(im); + evas_common_image_delete(im); return NULL; } im->flags = RGBA_IMAGE_IS_DIRTY; @@ -232,7 +272,7 @@ im->image = evas_common_image_surface_new(im); if (!im->image) { - evas_common_image_free(im); + evas_common_image_delete(im); return NULL; } im->image->w = w; @@ -241,7 +281,7 @@ evas_common_image_surface_alloc(im->image); if (!im->image->data) { - evas_common_image_free(im); + evas_common_image_delete(im); return NULL; } im->flags = RGBA_IMAGE_IS_DIRTY; @@ -263,72 +303,6 @@ } EAPI void -evas_common_image_free(RGBA_Image *im) -{ - im->ref--; - if (im->ref > 0) return; - if ((im->cs.data) && (im->image->data)) - { - if (im->cs.data != im->image->data) - { - if (!im->cs.no_free) free(im->cs.data); - } - } - else if (im->cs.data) - { - if (!im->cs.no_free) free(im->cs.data); - } - - im->cs.data = NULL; - evas_common_pipe_free(im); - if (im->image) evas_common_image_surface_free(im->image); - if (im->info.file) evas_stringshare_del(im->info.file); -// if (im->info.real_file) evas_stringshare_del(im->info.real_file); - if (im->info.key) evas_stringshare_del(im->info.key); -// if (im->info.comment) evas_stringshare_del(im->info.comment); - if (im->info.module) evas_module_unref((Evas_Module *)im->info.module); - /* memset the image to 0x99 because i recently saw a segv where an - * seemed to be used BUT its contents were wrong - it looks like it was - * overwritten by something from efreet - as there was an execute command - * for a command there and some other signs - but to make sure, I am - * going to empty this struct out in case this happens again so i know - * that something else is overwritign this struct - or not */ - memset(im, 0x99, sizeof(im)); - free(im); -} - -EAPI void -evas_common_image_ref(RGBA_Image *im) -{ - im->references++; - if (im->references == 1) /* we were in cache - take us out */ - { - evas_common_image_uncache(im); - evas_common_image_store(im); - } -} - -EAPI void -evas_common_image_unref(RGBA_Image *im) -{ - im->references--; - if (im->references <= 0) /* we were are now in cache - put us in */ - { - evas_common_image_unstore(im); - if ((cache_size > 0) && - (!(im->flags & RGBA_IMAGE_IS_DIRTY))) - { - evas_common_image_cache(im); - evas_common_image_flush_cache(); - } - else - { - evas_common_image_free(im); - } - } -} - -EAPI void evas_common_image_colorspace_normalize(RGBA_Image *im) { if ((!im->cs.data) || (!im->cs.dirty)) return; @@ -345,7 +319,7 @@ case EVAS_COLORSPACE_YCBCR422P601_PL: #ifdef BUILD_CONVERT_YUV if ((im->image->data) && (*((unsigned char **)im->cs.data))) - evas_common_convert_yuv_420p_601_rgba(im->cs.data, im->image->data, + evas_common_convert_yuv_420p_601_rgba(im->cs.data, (DATA8*) im->image->data, im->image->w, im->image->h); #endif break; @@ -362,236 +336,26 @@ } EAPI void -evas_common_image_cache(RGBA_Image *im) -{ - int ram; - - if (im->flags & RGBA_IMAGE_INDEXED) return; - im->flags |= RGBA_IMAGE_INDEXED; - cache = evas_object_list_prepend(cache, im); - ram = evas_common_image_ram_usage(im); - cache_usage += ram; - evas_common_image_flush_cache(); -} - -EAPI void -evas_common_image_uncache(RGBA_Image *im) -{ - int ram; - - if (!(im->flags & RGBA_IMAGE_INDEXED)) return; - im->flags &= ~RGBA_IMAGE_INDEXED; - cache = evas_object_list_remove(cache, im); - ram = evas_common_image_ram_usage(im); - cache_usage -= ram; -} - -EAPI void -evas_common_image_flush_cache(void) -{ - Evas_Object_List *l, *l_next; - - if (!cache) return; - if (cache_usage < cache_size) return; - - for (l = cache->last; l;) - { - RGBA_Image *im; - - l_next = l->prev; - im = (RGBA_Image *)l; - evas_common_image_uncache(im); - evas_common_image_free(im); - if (cache_usage <= cache_size) return; - l = l_next; - } -} - -EAPI void evas_common_image_set_cache(int size) { - cache_size = size; - evas_common_image_flush_cache(); + if (eci != NULL) + evas_cache_image_set(eci, size); } - EAPI int evas_common_image_get_cache(void) { - return cache_size; -} - -EAPI void -evas_common_image_store(RGBA_Image *im) -{ - char buf[4096 + 1024]; - - if (im->flags & RGBA_IMAGE_IS_DIRTY) return; - if (im->flags & RGBA_IMAGE_INDEXED) return; - if ((!im->info.file) && (!im->info.key)) return; - if ((im->load_opts.scale_down_by == 0) && - (im->load_opts.dpi == 0.0) && - ((im->load_opts.w == 0) || (im->load_opts.h == 0))) - { - if (im->info.key) - snprintf(buf, sizeof(buf), "%s//://%s", im->info.file, im->info.key); - else - snprintf(buf, sizeof(buf), "%s", im->info.file); - } - else - { - if (im->info.key) - snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//%s//://%s", im->load_opts.scale_down_by, im->load_opts.dpi, im->load_opts.w, im->load_opts.h, im->info.file, im->info.key); - else - snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//%s", im->load_opts.scale_down_by, im->load_opts.dpi, im->load_opts.w, im->load_opts.h, im->info.file); - } - images = evas_hash_add(images, buf, im); - im->flags |= RGBA_IMAGE_INDEXED; -} - -EAPI void -evas_common_image_unstore(RGBA_Image *im) -{ - char buf[4096 + 1024]; - - if (!(im->flags & RGBA_IMAGE_INDEXED)) return; - if ((!im->info.file) && (!im->info.key)) return; - if ((im->load_opts.scale_down_by == 0) && - (im->load_opts.dpi == 0.0) && - ((im->load_opts.w == 0) || (im->load_opts.h == 0))) - { - if (im->info.key) - snprintf(buf, sizeof(buf), "%s//://%s", im->info.file, im->info.key); - else - snprintf(buf, sizeof(buf), "%s", im->info.file); - } - else - { - if (im->info.key) - snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//%s//://%s", im->load_opts.scale_down_by, im->load_opts.dpi, im->load_opts.w, im->load_opts.h, im->info.file, im->info.key); - else - snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//%s", im->load_opts.scale_down_by, im->load_opts.dpi, im->load_opts.w, im->load_opts.h, im->info.file); - } - images = evas_hash_del(images, buf, im); - im->flags &= ~RGBA_IMAGE_INDEXED; + return evas_cache_image_get(eci); } #define STAT_GAP 2 EAPI RGBA_Image * -evas_common_image_find(const char *file, const char *key, DATA64 timestamp, RGBA_Image_Loadopts *lo) +evas_common_load_image_from_file(const char *file, const char *key, RGBA_Image_Loadopts *lo) { - RGBA_Image_Loadopts *lo2; - RGBA_Image *im; - char buf[4096 + 1024]; - Evas_Object_List *l; - struct stat st; - static time_t laststat = 0; - time_t t, mt = 0; - - if ((!file) && (!key)) return NULL; - if (!file) return NULL; - if ((!lo) || - ((lo) && - (lo->scale_down_by == 0) && - (lo->dpi == 0.0) && - ((lo->w == 0) || (lo->h == 0)))) - { - if (key) - snprintf(buf, sizeof(buf), "%s//://%s", file, key); - else - snprintf(buf, sizeof(buf), "%s", file); - } - else - { - if (key) - snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//%s//://%s", lo->scale_down_by, lo->dpi, lo->w, lo->h, file, key); - else - snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//%s", lo->scale_down_by, lo->dpi, lo->w, lo->h, file); - } - im = evas_hash_find(images, buf); - t = time(NULL); - if (im) - { - if ((t - im->laststat) < STAT_GAP) - return im; - else - { - struct stat st; - - if (stat(file, &st) < 0) return NULL; - mt = st.st_mtime; - if (mt == im->timestamp) - { - im->laststat = t; - laststat = t; - return im; - } - } - } - for (l = cache; l; l = l->next) - { - int ok; - - im = (RGBA_Image *)l; - lo2 = &(im->load_opts); - ok = 0; - if ((file) && (im->info.file) && - (!strcmp(file, im->info.file))) - ok++; - else if ((!file) && (!im->info.file)) - ok++; - else continue; - - if ((key) && (im->info.key) && - (!strcmp(key, im->info.key))) - ok++; - else if ((!key) && (!im->info.key)) - ok++; - else continue; - - if ((lo->scale_down_by == lo2->scale_down_by) && - (lo->dpi == lo2->dpi) && (lo->w == lo2->w) && - (lo->h == lo2->h)) - ok++; - else continue; - - if ((t - im->laststat) >= STAT_GAP) - { - if (stat(file, &st) < 0) continue; - mt = st.st_mtime; - if (im->timestamp == mt) - ok++; - else continue; - } - else ok++; - - laststat = t; - im->laststat = t; - return im; - } -/* - for (l = cache; l; l = l->next) - { - int ok; - - im = (RGBA_Image *)l; - ok = 0; - if ((file) && (im->info.file) && - (!strcmp(file, im->info.file))) - ok++; - if ((!file) && (!im->info.file)) - ok++; - if ((key) && (im->info.key) && - (!strcmp(key, im->info.key))) - ok++; - if ((!key) && (!im->info.key)) - ok++; -// if (im->timestamp == timestamp) -// ok++; - if (ok >= 2) return im; - } - */ - return NULL; + int error; + + if (file == NULL) return NULL; + return evas_cache_image_request(eci, file, key, lo, &error); } EAPI int @@ -610,16 +374,15 @@ } EAPI void -evas_common_image_dirty(RGBA_Image *im) +evas_common_image_cache_free(void) { - evas_common_image_unstore(im); - im->flags |= RGBA_IMAGE_IS_DIRTY; + evas_common_image_set_cache(0); } -EAPI void -evas_common_image_cache_free(void) +EAPI Evas_Cache_Image* +evas_common_image_cache_get(void) { - evas_common_image_set_cache(0); + return eci; } EAPI RGBA_Image * @@ -653,7 +416,7 @@ EAPI void evas_common_image_line_buffer_release(RGBA_Image *im) { - evas_common_image_free(im); + evas_common_image_delete(im); /* if (!evas_rgba_line_buffer) return; if (EVAS_RGBA_LINE_BUFFER_MAX_LEN < evas_rgba_line_buffer->image->w) @@ -673,7 +436,7 @@ EAPI void evas_common_image_line_buffer_free(RGBA_Image *im) { - evas_common_image_free(im); + evas_common_image_delete(im); /* if (!evas_rgba_line_buffer) return; evas_common_image_free(evas_rgba_line_buffer); @@ -711,7 +474,7 @@ EAPI void evas_common_image_alpha_line_buffer_release(RGBA_Image *im) { - evas_common_image_free(im); + evas_common_image_delete(im); /* if (!evas_alpha_line_buffer) return; if (EVAS_ALPHA_LINE_BUFFER_MAX_LEN < evas_alpha_line_buffer->image->w) @@ -725,17 +488,6 @@ evas_alpha_line_buffer = NULL; } } - */ -} - -EAPI void -evas_common_image_alpha_line_buffer_free(RGBA_Image *im) -{ - evas_common_image_free(im); -/* - if (!evas_alpha_line_buffer) return; - evas_common_image_free(evas_alpha_line_buffer); - evas_alpha_line_buffer = NULL; */ } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_pipe.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- evas_pipe.c 5 Apr 2007 15:42:39 -0000 1.8 +++ evas_pipe.c 16 Jul 2007 07:25:33 -0000 1.9 @@ -483,7 +483,9 @@ static void evas_common_pipe_op_image_free(RGBA_Pipe_Op *op) { - evas_common_image_free(op->op.image.src); + op->op.image.src->ref--; + if (op->op.image.src->ref == 0) + evas_cache_image_drop(op->op.image.src); evas_common_pipe_op_free(op); } @@ -493,15 +495,15 @@ if (info) { RGBA_Draw_Context context; - + memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context)); #ifdef EVAS_SLI evas_common_draw_context_set_sli(&(context), info->y, info->h); -#else +#else evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h); -#endif +#endif if (op->op.image.smooth) - evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src, + evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src, dst, &(context), op->op.image.sx, op->op.image.sy, @@ -512,7 +514,7 @@ op->op.image.dw, op->op.image.dh); else - evas_common_scale_rgba_in_to_out_clip_sample(op->op.image.src, + evas_common_scale_rgba_in_to_out_clip_sample(op->op.image.src, dst, &(context), op->op.image.sx, op->op.image.sy, @@ -526,7 +528,7 @@ else { if (op->op.image.smooth) - evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src, + evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src, dst, &(op->context), op->op.image.sx, op->op.image.sy, @@ -537,7 +539,7 @@ op->op.image.dw, op->op.image.dh); else - evas_common_scale_rgba_in_to_out_clip_sample(op->op.image.src, + evas_common_scale_rgba_in_to_out_clip_sample(op->op.image.src, dst, &(op->context), op->op.image.sx, op->op.image.sy, ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs