Enlightenment CVS committal

Author  : englebass
Project : e17
Module  : libs/efreet

Dir     : e17/libs/efreet/src/lib


Modified Files:
        efreet_icon.c 


Log Message:
Do atoi only once for each query.

===================================================================
RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_icon.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- efreet_icon.c       14 Aug 2008 19:47:48 -0000      1.35
+++ efreet_icon.c       14 Aug 2008 20:02:07 -0000      1.36
@@ -25,16 +25,16 @@
 
 static char *efreet_icon_find_fallback(Efreet_Icon_Theme *theme,
                                        const char *icon,
-                                       const char *size);
+                                       unsigned int size);
 static char *efreet_icon_list_find_fallback(Efreet_Icon_Theme *theme,
                                             Ecore_List *icons,
-                                            const char *size);
+                                            unsigned int size);
 static char *efreet_icon_find_helper(Efreet_Icon_Theme *theme,
-                                     const char *icon, const char *size);
+                                     const char *icon, unsigned int size);
 static char *efreet_icon_list_find_helper(Efreet_Icon_Theme *theme,
-                                          Ecore_List *icons, const char *size);
+                                          Ecore_List *icons, unsigned int 
size);
 static char *efreet_icon_lookup_icon(Efreet_Icon_Theme *theme,
-                                     const char *icon_name, const char *size);
+                                     const char *icon_name, unsigned int size);
 static char *efreet_icon_fallback_icon(const char *icon_name);
 static char *efreet_icon_fallback_dir_scan(const char *dir,
                                            const char *icon_name);
@@ -76,8 +76,8 @@
 static int efreet_icon_cache_find(Efreet_Icon_Cache *value, const char *key);
 static void efreet_icon_cache_flush(Ecore_List *list);
 static void efreet_icon_cache_free(Efreet_Icon_Cache *value);
-static char *efreet_icon_cache_check(Efreet_Icon_Theme *theme, const char 
*icon, const char *size);
-static void efreet_icon_cache_add(Efreet_Icon_Theme *theme, const char *icon, 
const char *size, const char *value);
+static char *efreet_icon_cache_check(Efreet_Icon_Theme *theme, const char 
*icon, unsigned int size);
+static void efreet_icon_cache_add(Efreet_Icon_Theme *theme, const char *icon, 
unsigned int size, const char *value);
 
 /**
  * @internal
@@ -335,19 +335,21 @@
 {
     char *value = NULL;
     Efreet_Icon_Theme *theme;
+    unsigned int real_size;
 
     theme = efreet_icon_find_theme_check(theme_name);
+    real_size = atoi(size);
 
 #ifdef SLOPPY_SPEC
     {
         char *tmp;
 
         tmp = efreet_icon_remove_extension(icon);
-        value = efreet_icon_find_helper(theme, tmp, size);
+        value = efreet_icon_find_helper(theme, tmp, real_size);
         FREE(tmp);
     }
 #else
-    value = efreet_icon_find_helper(theme, icon, size);
+    value = efreet_icon_find_helper(theme, icon, real_size);
 #endif
 
     /* we didn't find the icon in the theme or in the inherited directories
@@ -377,8 +379,10 @@
     const char *icon = NULL;
     char *value = NULL;
     Efreet_Icon_Theme *theme;
+    unsigned int real_size;
 
     theme = efreet_icon_find_theme_check(theme_name);
+    real_size = atoi(size);
 
     ecore_list_first_goto(icons);
 #ifdef SLOPPY_SPEC
@@ -391,11 +395,11 @@
         while ((icon = ecore_list_next(icons)))
             ecore_list_append(tmps, efreet_icon_remove_extension(icon));
 
-        value = efreet_icon_list_find_helper(theme, tmps, size);
+        value = efreet_icon_list_find_helper(theme, tmps, real_size);
         ecore_list_destroy(tmps);
     }
 #else
-    value = efreet_icon_list_find_helper(theme, icons, size);
+    value = efreet_icon_list_find_helper(theme, icons, real_size);
 #endif
 
     /* we didn't find the icons in the theme or in the inherited directories
@@ -453,7 +457,7 @@
  */
 static char *
 efreet_icon_find_fallback(Efreet_Icon_Theme *theme,
-                          const char *icon, const char *size)
+                          const char *icon, unsigned int size)
 {
     char *parent = NULL;
     char *value = NULL;
@@ -497,7 +501,7 @@
  */
 static char *
 efreet_icon_find_helper(Efreet_Icon_Theme *theme,
-                        const char *icon, const char *size)
+                        const char *icon, unsigned int size)
 {
     char *value;
     static int recurse = 0;
@@ -532,7 +536,7 @@
  */
 static char *
 efreet_icon_list_find_fallback(Efreet_Icon_Theme *theme,
-                               Ecore_List *icons, const char *size)
+                               Ecore_List *icons, unsigned int size)
 {
     char *parent = NULL;
     char *value = NULL;
@@ -580,7 +584,7 @@
  */
 static char *
 efreet_icon_list_find_helper(Efreet_Icon_Theme *theme,
-                             Ecore_List *icons, const char *size)
+                             Ecore_List *icons, unsigned int size)
 {
     char *value = NULL;
     const char *icon = NULL;
@@ -622,25 +626,23 @@
  */
 static char *
 efreet_icon_lookup_icon(Efreet_Icon_Theme *theme, const char *icon_name,
-                                                    const char *size)
+                                                    unsigned int size)
 {
     char *icon = NULL, *tmp = NULL;
     Efreet_Icon_Theme_Directory *dir;
     int minimal_size = INT_MAX;
-    unsigned int real_size;
 
     if (!theme || (theme->paths.count == 0) || !icon_name || !size)
         return NULL;
 
     icon = efreet_icon_cache_check(theme, icon_name, size);
     if (icon) return icon;
-    real_size = atoi(size);
 
     /* search for allowed size == requested size */
     ecore_list_first_goto(theme->directories);
     while ((dir = ecore_list_next(theme->directories)))
     {
-        if (!efreet_icon_directory_size_match(dir, real_size)) continue;
+        if (!efreet_icon_directory_size_match(dir, size)) continue;
         icon = efreet_icon_lookup_directory(theme, dir,
                                             icon_name);
         if (icon)
@@ -656,7 +658,7 @@
     {
         int distance;
 
-        distance = efreet_icon_directory_size_distance(dir, real_size);
+        distance = efreet_icon_directory_size_distance(dir, size);
         if (distance >= minimal_size) continue;
 
         tmp = efreet_icon_lookup_directory(theme, dir,
@@ -781,7 +783,7 @@
     char *icon;
 
     if (!icon_name) return NULL;
-    icon = efreet_icon_cache_check(NULL, icon_name, NULL);
+    icon = efreet_icon_cache_check(NULL, icon_name, 0);
     if (icon) return icon;
 
     icon = 
efreet_icon_fallback_dir_scan(efreet_icon_deprecated_user_dir_get(), icon_name);
@@ -799,7 +801,7 @@
             icon = efreet_icon_fallback_dir_scan(dir, icon_name);
             if (icon)
             {
-                efreet_icon_cache_add(NULL, icon_name, NULL, icon);
+                efreet_icon_cache_add(NULL, icon_name, 0, icon);
                 return icon;
             }
         }
@@ -812,7 +814,7 @@
             icon = efreet_icon_fallback_dir_scan(path, icon_name);
             if (icon)
             {
-                efreet_icon_cache_add(NULL, icon_name, NULL, icon);
+                efreet_icon_cache_add(NULL, icon_name, 0, icon);
                 return icon;
             }
         }
@@ -820,7 +822,7 @@
         icon = efreet_icon_fallback_dir_scan("/usr/share/pixmaps", icon_name);
     }
 
-    efreet_icon_cache_add(NULL, icon_name, NULL, icon);
+    efreet_icon_cache_add(NULL, icon_name, 0, icon);
     return icon;
 }
 
@@ -1576,7 +1578,7 @@
 }
 
 static char *
-efreet_icon_cache_check(Efreet_Icon_Theme *theme, const char *icon, const char 
*size)
+efreet_icon_cache_check(Efreet_Icon_Theme *theme, const char *icon, unsigned 
int size)
 {
     Ecore_List *list;
     Efreet_Icon_Cache *cache;
@@ -1592,7 +1594,7 @@
         return NULL;
     }
 
-    snprintf(key, sizeof(key), "%s %s", icon, size);
+    snprintf(key, sizeof(key), "%s %d", icon, size);
     cache = ecore_list_find(list, ECORE_COMPARE_CB(efreet_icon_cache_find), 
key);
     if (cache)
     {
@@ -1613,7 +1615,7 @@
 }
 
 static void
-efreet_icon_cache_add(Efreet_Icon_Theme *theme, const char *icon, const char 
*size, const char *value)
+efreet_icon_cache_add(Efreet_Icon_Theme *theme, const char *icon, unsigned int 
size, const char *value)
 {
     Ecore_List *list;
     Efreet_Icon_Cache *cache;
@@ -1628,7 +1630,7 @@
         ecore_hash_set(efreet_icon_cache, theme, list);
     }
 
-    snprintf(key, sizeof(key), "%s %s", icon, size);
+    snprintf(key, sizeof(key), "%s %d", icon, size);
     cache = NEW(Efreet_Icon_Cache, 1);
     cache->key = strdup(key);
     if ((value) && !stat(value, &st))



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to