Make icon test work without theme installed

SVN revision: 54973
This commit is contained in:
Sebastian Dransfeld 2010-11-25 09:04:19 +00:00
parent 6be2628e97
commit 19e3d5ee33
1 changed files with 11 additions and 34 deletions

View File

@ -17,8 +17,7 @@
static Eina_Bool _hash_keys(Eina_Hash *hash, const char *key, void *list);
static void ef_icon_theme_themes_find(const char *search_dir,
Eina_Hash *themes);
static void ef_icons_find(Efreet_Icon_Theme *theme, Eina_List *themes,
Eina_Hash *icons);
static void ef_icons_find(Efreet_Icon_Theme *theme, Eina_Hash *icons);
static void ef_read_dir(const char *dir, Eina_Hash *icons);
int
@ -453,29 +452,11 @@ ef_cb_efreet_icon_match(void)
int i, ret = 1;
Eina_Hash *icon_hash;
Efreet_Icon_Theme *theme;
Eina_List *themes;
Eina_List *l;
themes = efreet_icon_theme_list_get();
EINA_LIST_FOREACH(themes, l, theme)
{
if (!strcmp(theme->name.internal, THEME))
break;
}
if (!theme)
{
printf("Theme not installed, SKIPPED.\n");
while (themes)
themes = eina_list_remove_list(themes, themes);
return 1;
}
theme = efreet_icon_theme_find(THEME);
icon_hash = eina_hash_string_superfast_new(free);
ef_icons_find(theme, themes, icon_hash);
while (themes)
themes = eina_list_remove_list(themes, themes);
ef_icons_find(theme, icon_hash);
double start = ecore_time_get();
for (i = 0; system_icons[i]; i++)
@ -546,7 +527,7 @@ ef_cb_efreet_icon_match(void)
}
static void
ef_icons_find(Efreet_Icon_Theme *theme, Eina_List *themes, Eina_Hash *icons)
ef_icons_find(Efreet_Icon_Theme *theme, Eina_Hash *icons)
{
Eina_List *l, *ll;
char path[PATH_MAX];
@ -572,22 +553,18 @@ ef_icons_find(Efreet_Icon_Theme *theme, Eina_List *themes, Eina_Hash *icons)
EINA_LIST_FOREACH(theme->inherits, l, parent)
{
EINA_LIST_FOREACH(themes, ll, parent_theme)
{
if (!strcmp(parent_theme->name.internal, parent))
ef_icons_find(parent_theme, themes, icons);
}
parent_theme = efreet_icon_theme_find(parent);
if (parent_theme)
ef_icons_find(parent_theme, icons);
}
}
else
else if (strcmp(theme->name.internal, "hicolor"))
{
Efreet_Icon_Theme *parent_theme;
EINA_LIST_FOREACH(themes, l, parent_theme)
{
if (!strcmp(parent_theme->name.internal, "hicolor"))
ef_icons_find(parent_theme, themes, icons);
}
parent_theme = efreet_icon_theme_find("hicolor");
if (parent_theme)
ef_icons_find(parent_theme, icons);
}
ef_read_dir("/usr/share/pixmaps", icons);