Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/lib/engines/common Modified Files: evas_blit_main.c evas_font_draw.c evas_gradient_main.c evas_image_data.c evas_image_load.c evas_image_main.c evas_line_main.c evas_pipe.c evas_polygon_main.c evas_rectangle_main.c evas_scale_sample.c evas_scale_smooth.c evas_scale_smooth_scaler.c evas_scale_smooth_scaler_down.c evas_scale_smooth_scaler_noscale.c evas_scale_smooth_scaler_up.c Log Message: cedric's cache changes patch =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_blit_main.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- evas_blit_main.c 13 Sep 2007 14:35:01 -0000 1.8 +++ evas_blit_main.c 12 Apr 2008 00:32:25 -0000 1.9 @@ -32,7 +32,7 @@ /* clip clip clip */ if (w <= 0) return; - if (src_x + w > src->image->w) w = src->image->w - src_x; + if (src_x + w > src->cache_entry.w) w = src->cache_entry.w - src_x; if (w <= 0) return; if (src_x < 0) { @@ -43,7 +43,7 @@ if (w <= 0) return; if (h <= 0) return; - if (src_y + h > src->image->h) h = src->image->h - src_y; + if (src_y + h > src->cache_entry.h) h = src->cache_entry.h - src_y; if (h <= 0) return; if (src_y < 0) { @@ -54,7 +54,7 @@ if (h <= 0) return; if (w <= 0) return; - if (dst_x + w > dst->image->w) w = dst->image->w - dst_x; + if (dst_x + w > dst->cache_entry.w) w = dst->cache_entry.w - dst_x; if (w <= 0) return; if (dst_x < 0) { @@ -65,7 +65,7 @@ if (w <= 0) return; if (h <= 0) return; - if (dst_y + h > dst->image->h) h = dst->image->h - dst_y; + if (dst_y + h > dst->cache_entry.h) h = dst->cache_entry.h - dst_y; if (h <= 0) return; if (dst_y < 0) { @@ -78,13 +78,13 @@ if (dst == src) { /* src after dst - go forward */ - if (((src_y * src->image->w) + src_x) > ((dst_y * dst->image->w) + dst_x)) + if (((src_y * src->cache_entry.w) + src_x) > ((dst_y * dst->cache_entry.w) + dst_x)) { func = evas_common_draw_func_copy_get(w, 0); for (y = 0; y < h; y++) { - src_ptr = src->image->data + ((y + src_y) * src->image->w) + src_x; - dst_ptr = dst->image->data + ((y + dst_y) * dst->image->w) + dst_x; + src_ptr = src->image.data + ((y + src_y) * src->cache_entry.w) + src_x; + dst_ptr = dst->image.data + ((y + dst_y) * dst->cache_entry.w) + dst_x; func(src_ptr, dst_ptr, w); } } @@ -94,8 +94,8 @@ func = evas_common_draw_func_copy_get(w, 1); for (y = h - 1; y >= 0; y--) { - src_ptr = src->image->data + ((y + src_y) * src->image->w) + src_x; - dst_ptr = dst->image->data + ((y + dst_y) * dst->image->w) + dst_x; + src_ptr = src->image.data + ((y + src_y) * src->cache_entry.w) + src_x; + dst_ptr = dst->image.data + ((y + dst_y) * dst->cache_entry.w) + dst_x; func(src_ptr, dst_ptr, w); } } @@ -105,8 +105,8 @@ func = evas_common_draw_func_copy_get(w, 0); for (y = 0; y < h; y++) { - src_ptr = src->image->data + ((y + src_y) * src->image->w) + src_x; - dst_ptr = dst->image->data + ((y + dst_y) * dst->image->w) + dst_x; + src_ptr = src->image.data + ((y + src_y) * src->cache_entry.w) + src_x; + dst_ptr = dst->image.data + ((y + dst_y) * dst->cache_entry.w) + dst_x; func(src_ptr, dst_ptr, w); } } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_font_draw.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -3 -r1.34 -r1.35 --- evas_font_draw.c 26 Aug 2007 08:21:57 -0000 1.34 +++ evas_font_draw.c 12 Apr 2008 00:32:25 -0000 1.35 @@ -146,9 +146,9 @@ fi = fn->fonts->data; - im = dst->image->data; - im_w = dst->image->w; - im_h = dst->image->h; + im = dst->image.data; + im_w = dst->cache_entry.w; + im_h = dst->cache_entry.h; ext_x = 0; ext_y = 0; ext_w = im_w; ext_h = im_h; if (dc->clip.use) =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_gradient_main.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- evas_gradient_main.c 6 May 2007 11:29:37 -0000 1.15 +++ evas_gradient_main.c 12 Apr 2008 00:32:25 -0000 1.16 @@ -432,7 +432,7 @@ float angle; int direct_copy = 0, buf_step = 0; - if (!dst || !dc || !gr || !dst || !dst->image || !dst->image->data) + if (!dst || !dc || !gr || !dst || !dst->image.data) return; if (!gr->map.data || !gr->type.geometer) return; @@ -440,7 +440,7 @@ return; if ((w < 1) || (h < 1)) return; - clx = 0; cly = 0; clw = dst->image->w; clh = dst->image->h; + clx = 0; cly = 0; clw = dst->cache_entry.w; clh = dst->cache_entry.h; if ((clw < 1) || (clh < 1)) return; if (dc->clip.use) @@ -459,14 +459,14 @@ if ((dc->render_op == _EVAS_RENDER_FILL) || (dc->render_op == _EVAS_RENDER_COPY)) { - direct_copy = 1; buf_step = dst->image->w; + direct_copy = 1; buf_step = dst->cache_entry.w; if (gr->type.geometer->has_alpha(gr, dc->render_op)) dst->flags |= RGBA_IMAGE_HAS_ALPHA; } else if ((dc->render_op == _EVAS_RENDER_BLEND) && !gr->type.geometer->has_alpha(gr, dc->render_op)) { - direct_copy = 1; buf_step = dst->image->w; + direct_copy = 1; buf_step = dst->cache_entry.w; } } if (!direct_copy) @@ -514,13 +514,13 @@ map = gr->map.data; len = gr->map.len; - pdst = dst->image->data + (y * dst->image->w) + x; - dst_end = pdst + (h * dst->image->w); + pdst = dst->image.data + (y * dst->cache_entry.w) + x; + dst_end = pdst + (h * dst->cache_entry.w); if (!direct_copy) { - buf = argb_buf->image->data; + buf = argb_buf->image.data; if (alpha_buf) - mask = (DATA8 *)alpha_buf->image->data; + mask = (DATA8 *)alpha_buf->image.data; } else buf = pdst; @@ -536,7 +536,7 @@ evas_common_cpu_end_opt(); } buf += buf_step; - pdst += dst->image->w; + pdst += dst->cache_entry.w; yoff++; } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_image_data.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas_image_data.c 16 Jul 2007 07:25:33 -0000 1.1 +++ evas_image_data.c 12 Apr 2008 00:32:25 -0000 1.2 @@ -3,16 +3,18 @@ #include <assert.h> -EAPI int -evas_common_image_from_data(RGBA_Image* dst, int w, int h, DATA32 *image_data, int alpha, int cspace) +int +evas_common_rgba_image_from_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace) { + RGBA_Image *dst = (RGBA_Image *) ie_dst; + switch (cspace) { case EVAS_COLORSPACE_ARGB8888: - dst->image->w = w; - dst->image->h = h; - dst->image->data = image_data; - dst->image->no_free = 1; + dst->cache_entry.w = w; + dst->cache_entry.h = h; + dst->image.data = image_data; + dst->image.no_free = 1; if (alpha) dst->flags |= RGBA_IMAGE_HAS_ALPHA; else @@ -21,9 +23,8 @@ case EVAS_COLORSPACE_YCBCR422P601_PL: case EVAS_COLORSPACE_YCBCR422P709_PL: w &= ~0x1; - dst->image->w = w; - dst->image->h = h; - evas_common_image_surface_alloc(dst->image); + dst->cache_entry.w = w; + dst->cache_entry.h = h; dst->cs.data = image_data; dst->cs.no_free = 1; break; @@ -31,14 +32,17 @@ abort(); break; } - dst->cs.space = cspace; + dst->cache_entry.space = cspace; evas_common_image_colorspace_dirty(dst); return 0; } -EAPI int -evas_common_image_from_copied_data(RGBA_Image* dst, int w, int h, DATA32 *image_data, int alpha, int cspace) +int +evas_common_rgba_image_from_copied_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace) { + RGBA_Image *dst = (RGBA_Image *) ie_dst; + + /* FIXME: Is dst->image.data valid. */ switch (cspace) { case EVAS_COLORSPACE_ARGB8888: @@ -47,46 +51,49 @@ else dst->flags &= ~RGBA_IMAGE_HAS_ALPHA; if (image_data) - memcpy(dst->image->data, image_data, w * h * sizeof(DATA32)); + memcpy(dst->image.data, image_data, w * h * sizeof(DATA32)); break; case EVAS_COLORSPACE_YCBCR422P601_PL: case EVAS_COLORSPACE_YCBCR422P709_PL: - dst->cs.data = calloc(1, dst->image->h * sizeof(unsigned char*) * 2); + dst->cs.data = calloc(1, dst->cache_entry.h * sizeof(unsigned char*) * 2); if (image_data && (dst->cs.data)) - memcpy(dst->cs.data, image_data, dst->image->h * sizeof(unsigned char*) * 2); + memcpy(dst->cs.data, image_data, dst->cache_entry.h * sizeof(unsigned char*) * 2); break; default: abort(); break; } - dst->cs.space = cspace; + dst->cache_entry.space = cspace; evas_common_image_colorspace_dirty(dst); return 0; } -EAPI int -evas_common_image_size_set(RGBA_Image* dst, const RGBA_Image* im, int w, int h) +int +evas_common_rgba_image_size_set(Image_Entry *ie_dst, const Image_Entry *ie_im, int w, int h) { - if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) || - (im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL)) + RGBA_Image *dst = (RGBA_Image *) ie_dst; + RGBA_Image *im = (RGBA_Image *) ie_im; + + if ((im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P601_PL) || + (im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P709_PL)) w &= ~0x1; - dst->cs.space = im->cs.space; dst->flags = im->flags; dst->cs.no_free = 0; - if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) || - (im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL)) - dst->cs.data = calloc(1, dst->image->h * sizeof(unsigned char *) * 2); - evas_common_image_surface_alloc(dst->image); + if ((im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P601_PL) || + (im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P709_PL)) + dst->cs.data = calloc(1, dst->cache_entry.h * sizeof(unsigned char *) * 2); evas_common_image_colorspace_dirty(dst); return 0; } -EAPI int -evas_common_image_colorspace_set(RGBA_Image* dst, int cspace) +int +evas_common_rgba_image_colorspace_set(Image_Entry* ie_dst, int cspace) { + RGBA_Image *dst = (RGBA_Image *) ie_dst; + switch (cspace) { case EVAS_COLORSPACE_ARGB8888: @@ -99,24 +106,24 @@ break; case EVAS_COLORSPACE_YCBCR422P601_PL: case EVAS_COLORSPACE_YCBCR422P709_PL: - if (dst->image->no_free) + if (dst->image.no_free) { - dst->image->data = NULL; - dst->image->no_free = 0; - evas_common_image_surface_alloc(dst->image); + dst->image.data = NULL; + dst->image.no_free = 0; + /* FIXME: Must allocate image.data surface cleanly. */ } if (dst->cs.data) { if (!dst->cs.no_free) free(dst->cs.data); } - dst->cs.data = calloc(1, dst->image->h * sizeof(unsigned char *) * 2); + dst->cs.data = calloc(1, dst->cache_entry.h * sizeof(unsigned char *) * 2); dst->cs.no_free = 0; break; default: abort(); break; } - dst->cs.space = cspace; + dst->cache_entry.space = cspace; evas_common_image_colorspace_dirty(dst); return 0; =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_image_load.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -3 -r1.45 -r1.46 --- evas_image_load.c 1 Mar 2008 15:27:20 -0000 1.45 +++ evas_image_load.c 12 Apr 2008 00:32:25 -0000 1.46 @@ -29,17 +29,18 @@ { "pnm", "pmaps" } }; -EAPI int -evas_common_load_image_module_from_file(RGBA_Image *im) +int +evas_common_load_rgba_image_module_from_file(Image_Entry *ie) { Evas_Image_Load_Func *evas_image_load_func = NULL; + RGBA_Image *im = (RGBA_Image *) ie; const char *loader = NULL; - char *dot; Evas_List *l; Evas_Module *em; - int i; + char *dot; + int i; - dot = strrchr (im->info.file, '.'); + dot = strrchr (ie->file, '.'); if (dot) { for (i = 0, ++dot; i < (sizeof (loaders) / sizeof (struct ext_loader_s)); ++i) @@ -61,7 +62,7 @@ { evas_module_use(em); evas_image_load_func = em->functions; - if (evas_image_load_func->file_head(im, im->info.file, im->info.key)) + if (evas_image_load_func->file_head(im, ie->file, ie->key)) goto ok; } } @@ -74,7 +75,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, im->info.file, im->info.key)) + if (evas_image_load_func->file_head(im, ie->file, ie->key)) { if (evas_modules != l) { @@ -87,39 +88,28 @@ return -1; ok: - im->info.module = (void *)em; - im->info.loader = (void *)evas_image_load_func; - evas_module_ref((Evas_Module *)im->info.module); + im->info.module = (void*) em; + im->info.loader = (void*) evas_image_load_func; + evas_module_ref((Evas_Module*) im->info.module); return 0; } -EAPI void -evas_common_load_image_data_from_file(RGBA_Image *im) +int +evas_common_load_rgba_image_data_from_file(Image_Entry *ie) { Evas_Image_Load_Func *evas_image_load_func = NULL; + RGBA_Image *im = (RGBA_Image *) ie; - if ((im->flags & RGBA_IMAGE_LOADED) == RGBA_IMAGE_LOADED) return; - if (!im->info.module) return; + if (!im->info.module) return -1; + if (ie->flags.loaded) return -1; 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)) - { - if (!im->image->data) evas_common_image_surface_alloc(im->image); - if (!im->image->data) - { - const DATA32 pixel = 0xffffffff; + evas_module_use((Evas_Module*) im->info.module); + if (!evas_image_load_func->file_data(im, ie->file, ie->key)) + return -1; - im->image->w = 1; - im->image->h = 1; - im->image->data = (DATA32 *)&pixel; - im->image->no_free = 1; - } - } - else - { - evas_module_unref((Evas_Module *)im->info.module); - im->info.module = NULL; - } - im->flags |= RGBA_IMAGE_LOADED; + evas_module_unref((Evas_Module*) im->info.module); + im->info.module = NULL; + + return 0; } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_image_main.c,v retrieving revision 1.59 retrieving revision 1.60 diff -u -3 -r1.59 -r1.60 --- evas_image_main.c 14 Mar 2008 16:49:47 -0000 1.59 +++ evas_image_main.c 12 Apr 2008 00:32:25 -0000 1.60 @@ -26,28 +26,47 @@ #define EVAS_ALPHA_LINE_BUFFER_MIN_LEN 256 #define EVAS_ALPHA_LINE_BUFFER_MAX_LEN 2048 -/* The cache is doing the allocation and deallocation, you must just do the rest. */ -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); +static Image_Entry *_evas_common_rgba_image_new(void); +static void _evas_common_rgba_image_delete(Image_Entry *ie); + +static int _evas_common_rgba_image_surface_alloc(Image_Entry *ie, int w, int h); +static void _evas_common_rgba_image_surface_delete(Image_Entry *ie); + +static void _evas_common_rgba_image_unload(Image_Entry *im); + +static void _evas_common_rgba_image_dirty_region(Image_Entry *im, int x, int y, int w, int h); + +static int _evas_common_rgba_image_ram_usage(Image_Entry *ie); /* 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 int _evas_common_rgba_image_dirty(Image_Entry* dst, const Image_Entry* src); + +static void +_evas_common_rgba_image_debug(const char* context, Image_Entry *eim) +{ + fprintf(stderr, "%p = [%s] {%s,%s} %i [%i|%i]\n", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h); +} static const Evas_Cache_Image_Func _evas_common_image_func = { - evas_common_load_image_module_from_file, - _evas_common_image_unload, - _evas_common_image_dirty_region, - _evas_common_image_dirty, - evas_common_image_size_set, - evas_common_image_from_copied_data, - evas_common_image_from_data, - evas_common_image_colorspace_set, - evas_common_load_image_data_from_file, - evas_common_image_ram_usage, - NULL + _evas_common_rgba_image_new, + _evas_common_rgba_image_delete, + _evas_common_rgba_image_surface_alloc, + _evas_common_rgba_image_surface_delete, + evas_common_load_rgba_image_module_from_file, + _evas_common_rgba_image_unload, + _evas_common_rgba_image_dirty_region, + _evas_common_rgba_image_dirty, + evas_common_rgba_image_size_set, + evas_common_rgba_image_from_copied_data, + evas_common_rgba_image_from_data, + evas_common_rgba_image_colorspace_set, + evas_common_load_rgba_image_data_from_file, + _evas_common_rgba_image_ram_usage, +/* _evas_common_rgba_image_debug */ + NULL }; EAPI void @@ -91,22 +110,67 @@ #endif } -static void -_evas_common_image_unload(RGBA_Image* im) +static Image_Entry * +_evas_common_rgba_image_new(void) { + RGBA_Image *im; + + im = calloc(1, sizeof(RGBA_Image)); + if (!im) return NULL; + im->flags = RGBA_IMAGE_NOTHING; + im->ref = 1; + return &im->cache_entry; } static void -_evas_common_image_dirty_region(RGBA_Image* im, int x, int y, int w, int h) +_evas_common_rgba_image_delete(Image_Entry *ie) { + RGBA_Image *im = (RGBA_Image *) ie; + + evas_common_pipe_free(im); + 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); } -void -evas_common_image_delete(RGBA_Image* im) +static int +_evas_common_rgba_image_surface_alloc(Image_Entry *ie, int w, int h) +{ + RGBA_Image *im = (RGBA_Image *) ie; + size_t siz = 0; + +/* if (im->image.data) /\* return 0; *\/ */ +/* free(im->image.data); */ + + if (im->flags & RGBA_IMAGE_ALPHA_ONLY) + siz = w * h * sizeof(DATA8); + else + siz = w * h * sizeof(DATA32); + + im->image.data = realloc(im->image.data, siz); + if (im->image.data == NULL) return -1; + +#ifdef HAVE_VALGRIND + VALGRIND_MAKE_READABLE(im->image.data, siz); +#endif + + return 0; +} + +static void +_evas_common_rgba_image_surface_delete(Image_Entry *ie) { - if ((im->cs.data) && (im->image->data)) + RGBA_Image *im = (RGBA_Image *) ie; + + if ((im->cs.data) && (im->image.data)) { - if (im->cs.data != im->image->data) + if (im->cs.data != im->image.data) { if (!im->cs.no_free) free(im->cs.data); } @@ -115,34 +179,54 @@ { 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); + + if (im->image.data && !im->image.no_free) + free(im->image.data); + im->image.data = NULL; + im->image.no_free = 1; +} + +static void +_evas_common_rgba_image_unload(Image_Entry* im) +{ +} + +static void +_evas_common_rgba_image_dirty_region(Image_Entry* im, int x, int y, int w, int h) +{ } /* 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_rgba_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src) { - evas_common_load_image_data_from_file(src); + RGBA_Image *dst = (RGBA_Image *) ie_dst; + RGBA_Image *src = (RGBA_Image *) ie_src; + + evas_cache_image_load_data(&src->cache_entry); + if (_evas_common_rgba_image_surface_alloc(&dst->cache_entry, + src->cache_entry.w, src->cache_entry.h)) + return 1; + evas_common_image_colorspace_normalize(src); evas_common_image_colorspace_normalize(dst); - evas_common_image_surface_alloc(dst->image); - evas_common_blit_rectangle(src, dst, 0, 0, src->image->w, src->image->h, 0, 0); - evas_common_cpu_end_opt(); +/* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */ +/* evas_common_cpu_end_opt(); */ + + return 0; +} + +static int +_evas_common_rgba_image_ram_usage(Image_Entry *ie) +{ + RGBA_Image *im = (RGBA_Image *) ie; +// ram += sizeof(struct _RGBA_Image); +// if (im->info.real_file) ram += strlen(im->info.real_file); +// if (im->info.comment) ram += strlen(im->info.comment); + if ((im->image.data) && (!im->image.no_free)) + return im->cache_entry.w * im->cache_entry.h * sizeof(DATA32); return 0; } @@ -212,138 +296,73 @@ } #endif -EAPI RGBA_Surface * -evas_common_image_surface_new(RGBA_Image *im) -{ - RGBA_Surface *is; - - is = calloc(1, sizeof(RGBA_Surface)); - is->im = im; - return is; -} - -EAPI void -evas_common_image_surface_free(RGBA_Surface *is) -{ - evas_common_image_surface_dealloc(is); - free(is); -} - -EAPI void -evas_common_image_surface_alloc(RGBA_Surface *is) -{ - size_t siz = 0; - - if (is->data) return ; - - if (is->im->flags & RGBA_IMAGE_ALPHA_ONLY) - siz = is->w * is->h * sizeof(DATA8); - else - siz = is->w * is->h * sizeof(DATA32); - - is->data = malloc(siz); - -#ifdef HAVE_VALGRIND - VALGRIND_MAKE_READABLE(is->data, siz); -#endif -} - -EAPI void -evas_common_image_surface_dealloc(RGBA_Surface *is) -{ - if ((is->data) && (!is->no_free)) - { - free(is->data); - is->data = NULL; - } -} +/* EAPI void */ +/* evas_common_image_surface_dealloc(RGBA_Surface *is) */ +/* { */ +/* if ((is->data) && (!is->no_free)) */ +/* { */ +/* free(is->data); */ +/* is->data = NULL; */ +/* } */ +/* } */ -EAPI RGBA_Image * +static RGBA_Image * evas_common_image_create(int w, int h) { RGBA_Image *im; - im = evas_common_image_new(); + im = (RGBA_Image *) _evas_common_rgba_image_new(); if (!im) return NULL; - im->image = evas_common_image_surface_new(im); - if (!im->image) - { - evas_common_image_delete(im); - return NULL; - } - im->image->w = w; - im->image->h = h; - evas_common_image_surface_alloc(im->image); - if (!im->image->data) + im->cache_entry.w = w; + im->cache_entry.h = h; + if (_evas_common_rgba_image_surface_alloc(&im->cache_entry, w, h)) { - evas_common_image_delete(im); - return NULL; + _evas_common_rgba_image_delete(&im->cache_entry); + return NULL; } - im->flags = RGBA_IMAGE_IS_DIRTY; - im->references = 1; + im->cache_entry.flags.cached = 0; return im; } EAPI RGBA_Image * evas_common_image_alpha_create(int w, int h) { - RGBA_Image *im; + RGBA_Image *im; - im = evas_common_image_new(); + im = (RGBA_Image *) _evas_common_rgba_image_new(); if (!im) return NULL; - im->image = evas_common_image_surface_new(im); - if (!im->image) - { - evas_common_image_delete(im); - return NULL; - } - im->image->w = w; - im->image->h = h; + im->cache_entry.w = w; + im->cache_entry.h = h; im->flags |= RGBA_IMAGE_ALPHA_ONLY; - evas_common_image_surface_alloc(im->image); - if (!im->image->data) + if (_evas_common_rgba_image_surface_alloc(&im->cache_entry, w, h)) { - evas_common_image_delete(im); - return NULL; + _evas_common_rgba_image_delete(&im->cache_entry); + return NULL; } - im->flags = RGBA_IMAGE_IS_DIRTY; - im->references = 1; + im->cache_entry.flags.cached = 0; return im; } -EAPI RGBA_Image * -evas_common_image_new(void) -{ - RGBA_Image *im; - - im = calloc(1, sizeof(RGBA_Image)); - if (!im) return NULL; - im->flags = RGBA_IMAGE_NOTHING; - im->ref = 1; - im->cs.space = EVAS_COLORSPACE_ARGB8888; - return im; -} - -EAPI void +void evas_common_image_colorspace_normalize(RGBA_Image *im) { if ((!im->cs.data) || ((!im->cs.dirty) && (!(im->flags & RGBA_IMAGE_IS_DIRTY)))) return; - switch (im->cs.space) + switch (im->cache_entry.space) { case EVAS_COLORSPACE_ARGB8888: - if (im->image->data != im->cs.data) + if (im->image.data != im->cs.data) { - if (!im->image->no_free) free(im->image->data); - im->image->data = im->cs.data; - im->cs.no_free = im->image->no_free; + if (!im->image.no_free) free(im->image.data); + im->image.data = im->cs.data; + im->cs.no_free = im->image.no_free; } break; 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, (DATA8*) im->image->data, - im->image->w, im->image->h); + if ((im->image.data) && (*((unsigned char **)im->cs.data))) + evas_common_convert_yuv_420p_601_rgba(im->cs.data, (DATA8*) im->image.data, + im->cache_entry.w, im->cache_entry.h); #endif break; default: @@ -374,25 +393,10 @@ EAPI RGBA_Image * evas_common_load_image_from_file(const char *file, const char *key, RGBA_Image_Loadopts *lo) { - int error; + int error; if (file == NULL) return NULL; - return evas_cache_image_request(eci, file, key, lo, &error); -} - -EAPI int -evas_common_image_ram_usage(RGBA_Image *im) -{ - int ram = 0; - -// ram += sizeof(struct _RGBA_Image); -// if (im->info.file) ram += strlen(im->info.file); -// if (im->info.real_file) ram += strlen(im->info.real_file); -// if (im->info.key) ram += strlen(im->info.key); -// if (im->info.comment) ram += strlen(im->info.comment); - if ((im->image) && (im->image->data) && (!im->image->no_free)) - ram += im->image->w * im->image->h * sizeof(DATA32); - return ram; + return (RGBA_Image *) evas_cache_image_request(eci, file, key, lo, &error); } EAPI void @@ -438,7 +442,7 @@ EAPI void evas_common_image_line_buffer_release(RGBA_Image *im) { - evas_common_image_delete(im); + _evas_common_rgba_image_delete(&im->cache_entry);; /* if (!evas_rgba_line_buffer) return; if (EVAS_RGBA_LINE_BUFFER_MAX_LEN < evas_rgba_line_buffer->image->w) @@ -458,7 +462,7 @@ EAPI void evas_common_image_line_buffer_free(RGBA_Image *im) { - evas_common_image_delete(im); + _evas_common_rgba_image_delete(&im->cache_entry);; /* if (!evas_rgba_line_buffer) return; evas_common_image_free(evas_rgba_line_buffer); @@ -496,7 +500,7 @@ EAPI void evas_common_image_alpha_line_buffer_release(RGBA_Image *im) { - evas_common_image_delete(im); + _evas_common_rgba_image_delete(&im->cache_entry);; /* if (!evas_alpha_line_buffer) return; if (EVAS_ALPHA_LINE_BUFFER_MAX_LEN < evas_alpha_line_buffer->image->w) @@ -519,11 +523,11 @@ DATA32 *s, *se; DATA32 nas = 0; - if (!im || !im->image || !im->image->data) return; + if (!im || !im->image.data) return; if (!(im->flags & RGBA_IMAGE_HAS_ALPHA)) return; - s = im->image->data; - se = s + (im->image->w * im->image->h); + s = im->image.data; + se = s + (im->cache_entry.w * im->cache_entry.h); while (s < se) { DATA32 a = 1 + (*s >> 24); @@ -534,7 +538,7 @@ if ((a == 1) || (a == 256)) nas++; } - if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (im->image->w * im->image->h)) + if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (im->cache_entry.w * im->cache_entry.h)) im->flags |= RGBA_IMAGE_ALPHA_SPARSE; } @@ -544,11 +548,11 @@ DATA32 *s, *se; DATA32 nas = 0; - if (!im || !im->image || !im->image->data) return; + if (!im || !im->image.data) return; if (!(im->flags & RGBA_IMAGE_HAS_ALPHA)) return; - s = im->image->data; - se = s + (im->image->w * im->image->h); + s = im->image.data; + se = s + (im->cache_entry.w * im->cache_entry.h); while (s < se) { DATA32 p = *s & 0xff000000; @@ -557,6 +561,6 @@ nas++; s++; } - if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (im->image->w * im->image->h)) + if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (im->cache_entry.w * im->cache_entry.h)) im->flags |= RGBA_IMAGE_ALPHA_SPARSE; } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_line_main.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- evas_line_main.c 15 Nov 2006 16:44:34 -0000 1.18 +++ evas_line_main.c 12 Apr 2008 00:32:25 -0000 1.19 @@ -52,8 +52,8 @@ } clx = cly = 0; - clw = dst->image->w; - clh = dst->image->h; + clw = dst->cache_entry.w; + clh = dst->cache_entry.h; /* save out clip info */ cuse = dc->clip.use; @@ -104,13 +104,13 @@ { RGBA_Gfx_Pt_Func pfunc; - if (!IN_RANGE(x, y, dst->image->w, dst->image->h)) + if (!IN_RANGE(x, y, dst->cache_entry.w, dst->cache_entry.h)) return; if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h))) return; pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op); if (pfunc) - pfunc(0, 255, dc->col.col, dst->image->data + (dst->image->w * y) + x); + pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x); } /* @@ -129,7 +129,7 @@ RGBA_Gfx_Pt_Func pfunc; RGBA_Gfx_Func sfunc; - dstw = dst->image->w; + dstw = dst->cache_entry.w; color = dc->col.col; if (y0 > y1) @@ -170,7 +170,7 @@ if (x1 > rx) x1 = rx; len = x1 - x0 + 1; - p = dst->image->data + (dstw * y0) + x0; + p = dst->image.data + (dstw * y0) + x0; sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op); if (sfunc) sfunc(NULL, NULL, color, p, len); @@ -190,7 +190,7 @@ if (y1 > by) y1 = by; len = y1 - y0 + 1; - p = dst->image->data + (dstw * y0) + x0; + p = dst->image.data + (dstw * y0) + x0; while (len--) { #ifdef EVAS_SLI @@ -268,7 +268,7 @@ } if (y1 > y0) { - p = dst->image->data + (dstw * y0) + x0; + p = dst->image.data + (dstw * y0) + x0; len = y1 - y0 + 1; if (dx > 0) dstw++; else dstw--; @@ -276,7 +276,7 @@ else { len = y0 - y1 + 1; - p = dst->image->data + (dstw * y1) + x1; + p = dst->image.data + (dstw * y1) + x1; if (dx > 0) dstw--; else dstw++; } @@ -472,8 +472,8 @@ clw = dc->clip.w; clh = dc->clip.h; - data = dst->image->data; - dstw = dst->image->w; + data = dst->image.data; + dstw = dst->cache_entry.w; data += (dstw * cly) + clx; x0 -= clx; @@ -579,8 +579,8 @@ clw = dc->clip.w; clh = dc->clip.h; - data = dst->image->data; - dstw = dst->image->w; + data = dst->image.data; + dstw = dst->cache_entry.w; data += (dstw * cly) + clx; x0 -= clx; =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_pipe.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- evas_pipe.c 16 Jul 2007 07:25:33 -0000 1.9 +++ evas_pipe.c 12 Apr 2008 00:32:25 -0000 1.10 @@ -139,26 +139,26 @@ } } y = 0; - h = im->image->h / thread_num; + h = im->cache_entry.h / thread_num; if (h < 1) h = 1; for (i = 0; i < thread_num; i++) { RGBA_Pipe_Thread_Info *info; -// if (y >= im->image->h) break; +// if (y >= im->cache_entry.h) break; info = calloc(1, sizeof(RGBA_Pipe_Thread_Info)); info->im = im; #ifdef EVAS_SLI info->x = 0; - info->w = im->image->w; + info->w = im->cache_entry.w; info->y = i; info->h = thread_num; #else info->x = 0; info->y = y; - info->w = im->image->w; + info->w = im->cache_entry.w; if (i == (thread_num - 1)) - info->h = im->image->h - y; + info->h = im->cache_entry.h - y; else info->h = h; y += info->h; @@ -485,7 +485,7 @@ { op->op.image.src->ref--; if (op->op.image.src->ref == 0) - evas_cache_image_drop(op->op.image.src); + evas_cache_image_drop(&op->op.image.src->cache_entry); evas_common_pipe_op_free(op); } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_polygon_main.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- evas_polygon_main.c 15 Nov 2006 16:44:34 -0000 1.7 +++ evas_polygon_main.c 12 Apr 2008 00:32:25 -0000 1.8 @@ -134,8 +134,8 @@ ext_x = 0; ext_y = 0; - ext_w = dst->image->w; - ext_h = dst->image->h; + ext_w = dst->cache_entry.w; + ext_h = dst->cache_entry.h; if (dc->clip.use) { if (dc->clip.x > ext_x) @@ -280,7 +280,7 @@ if (((span->y) % dc->sli.h) == dc->sli.y) #endif { - ptr = dst->image->data + (span->y * (dst->image->w)) + span->x; + ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; func(NULL, NULL, dc->col.col, ptr, span->w); } } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_rectangle_main.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- evas_rectangle_main.c 2 Oct 2007 03:40:14 -0000 1.8 +++ evas_rectangle_main.c 12 Apr 2008 00:32:25 -0000 1.9 @@ -17,11 +17,11 @@ /* handle cutouts here! */ if ((w <= 0) || (h <= 0)) return; - if (!(RECTS_INTERSECT(x, y, w, h, 0, 0, dst->image->w, dst->image->h))) + if (!(RECTS_INTERSECT(x, y, w, h, 0, 0, dst->cache_entry.w, dst->cache_entry.h))) return; /* save out clip info */ c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h; - evas_common_draw_context_clip_clip(dc, 0, 0, dst->image->w, dst->image->h); + evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h); /* no cutouts - cut right to the chase */ if (!dc->cutout.rects) { @@ -58,7 +58,7 @@ if ((w <= 0) || (h <= 0)) return; func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op); - ptr = dst->image->data + (y * dst->image->w) + x; + ptr = dst->image.data + (y * dst->cache_entry.w) + x; for (yy = 0; yy < h; yy++) { #ifdef EVAS_SLI @@ -67,6 +67,6 @@ { func(NULL, NULL, dc->col.col, ptr, w); } - ptr += dst->image->w; + ptr += dst->cache_entry.w; } } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_scale_sample.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- evas_scale_sample.c 30 Apr 2007 03:28:05 -0000 1.10 +++ evas_scale_sample.c 12 Apr 2008 00:32:25 -0000 1.11 @@ -37,7 +37,7 @@ /* handle cutouts here! */ if ((dst_region_w <= 0) || (dst_region_h <= 0)) return; - if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->image->w, dst->image->h))) + if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h))) return; /* no cutouts - cut right to the chase */ if (!dc->cutout.rects) @@ -51,7 +51,7 @@ } /* save out clip info */ c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h; - evas_common_draw_context_clip_clip(dc, 0, 0, dst->image->w, dst->image->h); + evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h); evas_common_draw_context_clip_clip(dc, dst_region_x, dst_region_y, dst_region_w, dst_region_h); /* our clip is 0 size.. abort */ if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) @@ -94,18 +94,18 @@ int src_w, src_h, dst_w, dst_h; RGBA_Gfx_Func func; - if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->image->w, dst->image->h))) + if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h))) return; - if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->image->w, src->image->h))) + if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->cache_entry.w, src->cache_entry.h))) return; - src_w = src->image->w; - src_h = src->image->h; - dst_w = dst->image->w; - dst_h = dst->image->h; + src_w = src->cache_entry.w; + src_h = src->cache_entry.h; + dst_w = dst->cache_entry.w; + dst_h = dst->cache_entry.h; - src_data = src->image->data; - dst_data = dst->image->data; + src_data = src->image.data; + dst_data = dst->image.data; if (dc->clip.use) { =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_scale_smooth.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- evas_scale_smooth.c 4 Apr 2007 09:55:39 -0000 1.16 +++ evas_scale_smooth.c 12 Apr 2008 00:32:25 -0000 1.17 @@ -454,7 +454,7 @@ /* handle cutouts here! */ if ((dst_region_w <= 0) || (dst_region_h <= 0)) return; - if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->image->w, dst->image->h))) + if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h))) return; # ifdef BUILD_MMX evas_common_cpu_can_do(&mmx, &sse, &sse2); @@ -482,7 +482,7 @@ } /* save out clip info */ c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h; - evas_common_draw_context_clip_clip(dc, 0, 0, dst->image->w, dst->image->h); + evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h); evas_common_draw_context_clip_clip(dc, dst_region_x, dst_region_y, dst_region_w, dst_region_h); /* our clip is 0 size.. abort */ if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_scale_smooth_scaler.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- evas_scale_smooth_scaler.c 30 Sep 2006 10:18:32 -0000 1.12 +++ evas_scale_smooth_scaler.c 12 Apr 2008 00:32:25 -0000 1.13 @@ -11,15 +11,15 @@ int dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h; int src_w, src_h, dst_w, dst_h; - if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->image->w, dst->image->h))) + if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h))) return; - if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->image->w, src->image->h))) + if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->cache_entry.w, src->cache_entry.h))) return; - src_w = src->image->w; - src_h = src->image->h; - dst_w = dst->image->w; - dst_h = dst->image->h; + src_w = src->cache_entry.w; + src_h = src->cache_entry.h; + dst_w = dst->cache_entry.w; + dst_h = dst->cache_entry.h; if (dc->clip.use) { @@ -141,7 +141,7 @@ dst_jump = dst_w - dst_clip_w; /* figure out dest start ptr */ - dst_ptr = dst->image->data + dst_clip_x + (dst_clip_y * dst_w); + dst_ptr = dst->image.data + dst_clip_x + (dst_clip_y * dst_w); /* FIXME: * =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_scale_smooth_scaler_down.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- evas_scale_smooth_scaler_down.c 28 Dec 2006 12:40:42 -0000 1.7 +++ evas_scale_smooth_scaler_down.c 12 Apr 2008 00:32:25 -0000 1.8 @@ -7,7 +7,7 @@ RGBA_Gfx_Func func; - src_data = src->image->data; + src_data = src->image.data; xpoints = scale_calc_x_points(src_region_w, dst_region_w); ypoints = scale_calc_y_points(src_data, src_w, src_region_h, dst_region_h); =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_scale_smooth_scaler_noscale.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- evas_scale_smooth_scaler_noscale.c 15 Nov 2006 16:44:34 -0000 1.7 +++ evas_scale_smooth_scaler_noscale.c 12 Apr 2008 00:32:25 -0000 1.8 @@ -5,7 +5,7 @@ int ysli = dst_clip_y; #endif - ptr = src->image->data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; + ptr = src->image.data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; if (dc->mul.use) func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op); else =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_scale_smooth_scaler_up.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- evas_scale_smooth_scaler_up.c 28 Dec 2006 12:40:42 -0000 1.12 +++ evas_scale_smooth_scaler_up.c 12 Apr 2008 00:32:25 -0000 1.13 @@ -18,10 +18,10 @@ if (!dc->mul.use) { if ((dc->render_op == _EVAS_RENDER_BLEND) && !(src->flags & RGBA_IMAGE_HAS_ALPHA)) - { direct_scale = 1; buf_step = dst->image->w; } + { direct_scale = 1; buf_step = dst->cache_entry.w; } else if (dc->render_op == _EVAS_RENDER_COPY) { - direct_scale = 1; buf_step = dst->image->w; + direct_scale = 1; buf_step = dst->cache_entry.w; if (src->flags & RGBA_IMAGE_HAS_ALPHA) dst->flags |= RGBA_IMAGE_HAS_ALPHA; } @@ -61,7 +61,7 @@ #ifdef EVAS_SLI int ysli = dst_clip_y; #endif - psrc = src->image->data + (src_w * (sry + cy)) + srx; + psrc = src->image.data + (src_w * (sry + cy)) + srx; while (pdst < pdst_end) { #ifdef EVAS_SLI @@ -117,7 +117,7 @@ } else if (drw == srw) { - DATA32 *ps = src->image->data + (src_w * sry) + srx + cx; + DATA32 *ps = src->image.data + (src_w * sry) + srx + cx; #ifdef EVAS_SLI int ysli = dst_clip_y; #endif @@ -176,7 +176,7 @@ } { - DATA32 *ps = src->image->data + (src_w * sry) + srx; + DATA32 *ps = src->image.data + (src_w * sry) + srx; int sxx0 = sxx; #ifdef EVAS_SLI int ysli = dst_clip_y; ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs