Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/engines/common


Modified Files:
        evas_font_load.c evas_image_load.c evas_image_main.c 


Log Message:


stringshare works! :)

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_font_load.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- evas_font_load.c    29 Nov 2005 09:02:51 -0000      1.26
+++ evas_font_load.c    30 Nov 2005 08:45:20 -0000      1.27
@@ -13,16 +13,13 @@
 RGBA_Font_Source *
 evas_common_font_source_memory_load(const char *name, const void *data, int 
data_size)
 {
-   int error, len;
+   int error;
    RGBA_Font_Source *fs;
 
-   len = strlen(name);
-   fs = calloc(1, sizeof(RGBA_Font_Source) + len + 1 + data_size);
+   fs = calloc(1, sizeof(RGBA_Font_Source) + data_size);
    if (!fs) return NULL;
-   fs->name = ((char *)fs) + sizeof(RGBA_Font_Source);
-   strcpy(fs->name, name);
    fs->file = NULL;
-   fs->data = fs->name + len + 1;
+   fs->data = ((unsigned char *)fs) + sizeof(RGBA_Font_Source);
    fs->current_size = 0;
    memcpy(fs->data, data, data_size);
    fs->data_size = data_size;
@@ -32,13 +29,10 @@
        free(fs);
        return NULL;
      }
-
+   fs->name = evas_stringshare_add(name);
    error = FT_Select_Charmap(fs->ft.face, ft_encoding_unicode);
-
    fs->ft.orig_upem = fs->ft.face->units_per_EM;
-
    fs->references = 1;
-
    fonts_src = evas_object_list_prepend(fonts_src, fs);
    return fs;
 }
@@ -46,14 +40,11 @@
 RGBA_Font_Source *
 evas_common_font_source_load(const char *name)
 {
-   int error, len;
+   int error;
    RGBA_Font_Source *fs;
 
-   len = strlen(name);
-   fs = calloc(1, sizeof(RGBA_Font_Source) + len + 1);
+   fs = calloc(1, sizeof(RGBA_Font_Source));
    if (!fs) return NULL;
-   fs->name = ((char *)fs) + sizeof(RGBA_Font_Source);
-   strcpy(fs->name, name);
    fs->file = fs->name;
    fs->data = NULL;
    fs->data_size = 0;
@@ -64,34 +55,10 @@
        free(fs);
        return NULL;
      }
+   fs->name = evas_stringshare_add(name);
    error = FT_Select_Charmap(fs->ft.face, ft_encoding_unicode);
-   if (error)
-     {
-       printf("cant select unicode!\n");
-/* disable this for now...
-       error = FT_Select_Charmap(fs->ft.face, ft_encoding_latin_2);
-       if (error)
-         {
-            error = FT_Select_Charmap(fs->ft.face, ft_encoding_sjis);
-            if (error)
-              {
-                 error = FT_Select_Charmap(fs->ft.face, ft_encoding_gb2312);
-                 if (error)
-                   {
-                      error = FT_Select_Charmap(fs->ft.face, ft_encoding_big5);
-                      if (error)
-                        {
-                        }
-                   }
-              }
-         }
- */
-     }
-
    fs->ft.orig_upem = fs->ft.face->units_per_EM;
-
    fs->references = 1;
-
    fonts_src = evas_object_list_prepend(fonts_src, fs);
    return fs;
 }
@@ -126,6 +93,7 @@
 
    fonts_src = evas_object_list_remove(fonts_src, fs);
    FT_Done_Face(fs->ft.face);
+   if (fs->name) evas_stringshare_del(fs->name);
    free(fs);
 }
 
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_image_load.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- evas_image_load.c   29 Nov 2005 09:02:51 -0000      1.23
+++ evas_image_load.c   30 Nov 2005 08:45:20 -0000      1.24
@@ -200,15 +200,8 @@
        fclose(f);
        return -1;
      }
-   lines = (unsigned char **) malloc(h * sizeof(unsigned char *));
+   lines = (unsigned char **) alloca(h * sizeof(unsigned char *));
 
-   if (!lines)
-     {
-       evas_common_image_surface_free(im->image);
-       png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
-       fclose(f);
-       return -1;
-     }
    if (hasg)
      {
        png_set_gray_to_rgb(png_ptr);
@@ -218,7 +211,6 @@
    for (i = 0; i < h; i++)
      lines[i] = ((unsigned char *)(im->image->data)) + (i * w * 
sizeof(DATA32));
    png_read_image(png_ptr, lines);
-   free(lines);
    png_read_end(png_ptr, info_ptr);
    png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
    fclose(f);
@@ -351,16 +343,10 @@
        jpeg_destroy_decompress(&cinfo);
        return -1;
      }
-   data = malloc(w * 16 * 3);
-   if (!data)
-     {
-       jpeg_destroy_decompress(&cinfo);
-       return -1;
-     }
+   data = alloca(w * 16 * 3);
    evas_common_image_surface_alloc(im->image);
    if (!im->image->data)
      {
-       free(data);
        jpeg_destroy_decompress(&cinfo);
        return -1;
      }
@@ -411,7 +397,6 @@
               }
          }
      }
-   free(data);
 /* end data decoding */
    jpeg_finish_decompress(&cinfo);
    jpeg_destroy_decompress(&cinfo);
@@ -457,15 +442,9 @@
        jpeg_destroy_decompress(&cinfo);
        return -1;
      }
-   data = malloc(w * 16 * 3);
-   if (!data)
-     {
-       jpeg_destroy_decompress(&cinfo);
-       return -1;
-     }
+   data = alloca(w * 16 * 3);
    if (!im->image->data)
      {
-       free(data);
        jpeg_destroy_decompress(&cinfo);
        return -1;
      }
@@ -518,7 +497,6 @@
               }
          }
      }
-   free(data);
 /* end data decoding */
    jpeg_finish_decompress(&cinfo);
    jpeg_destroy_decompress(&cinfo);
@@ -958,15 +936,14 @@
 //   im->timestamp = mod_time;
    if (file)
      {
-       im->info.file = strdup(file);
+       im->info.file = evas_stringshare_add(file);
 //     im->info.real_file = real_file;
      }
    else
      {
 //     if (real_file) free(real_file);
      }
-   if (key)
-     im->info.key = strdup(key);
+   if (key) im->info.key = evas_stringshare_add(key);
    evas_common_image_ref(im);
    return im;
 }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/engines/common/evas_image_main.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- evas_image_main.c   29 Nov 2005 11:46:20 -0000      1.23
+++ evas_image_main.c   30 Nov 2005 08:45:20 -0000      1.24
@@ -227,10 +227,10 @@
 evas_common_image_free(RGBA_Image *im)
 {
    if (im->image) evas_common_image_surface_free(im->image);
-   if (im->info.file) free(im->info.file);
-   if (im->info.real_file) free(im->info.real_file);
-   if (im->info.key) free(im->info.key);
-   if (im->info.comment) free(im->info.comment);
+   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);
    free(im);
 }
 
@@ -312,18 +312,6 @@
 }
 
 void
-evas_common_image_free_cache(void)
-{
-       while (cache)
-       {
-               RGBA_Image *im = (RGBA_Image *) cache;
-
-               evas_common_image_uncache(im);
-               evas_common_image_free(im);
-       }
-}
-
-void
 evas_common_image_set_cache(int size)
 {
    cache_size = size;
@@ -347,23 +335,23 @@
    if (im->flags & RGBA_IMAGE_INDEXED) return;
    if ((!im->info.file) && (!im->info.key)) return;
    l1 = 0;
-   if (im->info.real_file) l1 = strlen(im->info.real_file);
-   else if (im->info.file) l1 = strlen(im->info.file);
+//   if (im->info.real_file) l1 = strlen(im->info.real_file);
+//   else
+     if (im->info.file) l1 = strlen(im->info.file);
    l2 = 0;
    if (im->info.key) l2 = strlen(im->info.key);
    snprintf(buf, sizeof(buf), "%llx", im->timestamp);
    l3 = strlen(buf);
-   key = malloc(l1 + 5 + l2 + 5 + l3 +1);
-   if (!key) return;
+   key = alloca(l1 + 5 + l2 + 5 + l3 +1);
    key[0] = 0;
-   if (im->info.real_file) strcpy(key, im->info.real_file);
-   else if (im->info.file) strcpy(key, im->info.file);
+//   if (im->info.real_file) strcpy(key, im->info.real_file);
+//   else
+     if (im->info.file) strcpy(key, im->info.file);
    strcat(key, "//://");
    if (im->info.key) strcat(key, im->info.key);
    strcat(key, "//://");
    strcat(key, buf);
    images = evas_hash_add(images, key, im);
-   free(key);
    im->flags |= RGBA_IMAGE_INDEXED;
 }
 
@@ -377,23 +365,23 @@
    if (!(im->flags & RGBA_IMAGE_INDEXED)) return;
    if ((!im->info.file) && (!im->info.key)) return;
    l1 = 0;
-   if (im->info.real_file) l1 = strlen(im->info.real_file);
-   else if (im->info.file) l1 = strlen(im->info.file);
+//   if (im->info.real_file) l1 = strlen(im->info.real_file);
+//   else
+     if (im->info.file) l1 = strlen(im->info.file);
    l2 = 0;
    if (im->info.key) l2 = strlen(im->info.key);
    snprintf(buf, sizeof(buf), "%llx", im->timestamp);
    l3 = strlen(buf);
-   key = malloc(l1 + 5 + l2 + 5 + l3 +1);
-   if (!key) return;
+   key = alloca(l1 + 5 + l2 + 5 + l3 +1);
    key[0] = 0;
-   if (im->info.real_file) strcpy(key, im->info.real_file);
-   else if (im->info.file) strcpy(key, im->info.file);
+//   if (im->info.real_file) strcpy(key, im->info.real_file);
+//   else 
+     if (im->info.file) strcpy(key, im->info.file);
    strcat(key, "//://");
    if (im->info.key) strcat(key, im->info.key);
    strcat(key, "//://");
    strcat(key, buf);
    images = evas_hash_del(images, key, im);
-   free(key);
    im->flags &= ~RGBA_IMAGE_INDEXED;
 }
 
@@ -418,12 +406,7 @@
    if (key) l2 = strlen(key);
    snprintf(buf, sizeof(buf), "%llx", timestamp);
    l3 = strlen(buf);
-   str = malloc(l1 + 5 + l2 + 5 + l3 +1);
-   if (!str)
-     {
-       if (real_filename) free(real_filename);
-       return NULL;
-     }
+   str = alloca(l1 + 5 + l2 + 5 + l3 +1);
    str[0] = 0;
    if (real_filename) strcpy(str, real_filename);
    else if (filename) strcpy(str, filename);
@@ -432,10 +415,9 @@
    strcat(str, "//://");
    strcat(str, buf);
    im = evas_hash_find(images, str);
-   free(str);
    if (im)
      {
-       if (real_filename) free(real_filename);
+//     if (real_filename) free(real_filename);
        return im;
      }
 
@@ -445,6 +427,7 @@
 
        im = (RGBA_Image *)l;
        ok = 0;
+/*     
        if ((real_filename) && (im->info.real_file))
          {
              if ((im->info.real_file) &&
@@ -453,6 +436,7 @@
               ok++;
          }
        else
+ */
          {
             if ((filename) && (im->info.file) &&
                 (!strcmp(filename, im->info.file)))
@@ -469,11 +453,11 @@
          ok++;
        if (ok >= 3)
          {
-            if (real_filename) free(real_filename);
+//          if (real_filename) free(real_filename);
             return im;
          }
      }
-   if (real_filename) free(real_filename);
+//   if (real_filename) free(real_filename);
    return NULL;
 }
 
@@ -484,7 +468,7 @@
 
    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.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))
@@ -499,3 +483,15 @@
    im->flags |= RGBA_IMAGE_IS_DIRTY;
 }
 
+void
+evas_common_image_free_cache(void)
+{
+   while (cache)
+     {
+       RGBA_Image *im = (RGBA_Image *) cache;
+       
+       evas_common_image_uncache(im);
+       evas_common_image_free(im);
+     }
+}
+




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to