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

Reply via email to