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