Check if theme has changed when building cache
SVN revision: 56596
This commit is contained in:
parent
4ec17d71fc
commit
8309f40d0f
|
@ -46,3 +46,6 @@
|
||||||
|
|
||||||
* Create internal struct for theme cache
|
* Create internal struct for theme cache
|
||||||
|
|
||||||
|
2011-01-XX Sebastian Dransfeld
|
||||||
|
|
||||||
|
* Check if theme has changed when building cache
|
||||||
|
|
|
@ -302,6 +302,35 @@ cache_scan(Efreet_Icon_Theme *theme, Eina_Hash *themes, Eina_Hash *icons, Eina_H
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
check_changed(Efreet_Cache_Icon_Theme *theme)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
if (!theme) return EINA_FALSE;
|
||||||
|
|
||||||
|
if (theme->changed) return EINA_TRUE;
|
||||||
|
if (theme->theme.inherits)
|
||||||
|
{
|
||||||
|
EINA_LIST_FOREACH(theme->theme.inherits, l, name)
|
||||||
|
{
|
||||||
|
Efreet_Cache_Icon_Theme *inherit;
|
||||||
|
|
||||||
|
inherit = eina_hash_find(icon_themes, name);
|
||||||
|
if (!inherit) fprintf(stderr, "Theme `%s` not found for `%s`.\n",
|
||||||
|
name, theme->theme.name.internal);
|
||||||
|
if (check_changed(inherit)) return EINA_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(theme->theme.name.internal, "hicolor"))
|
||||||
|
{
|
||||||
|
theme = eina_hash_find(icon_themes, "hicolor");
|
||||||
|
if (check_changed(theme)) return EINA_TRUE;
|
||||||
|
}
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static Efreet_Icon_Theme_Directory *
|
static Efreet_Icon_Theme_Directory *
|
||||||
icon_theme_directory_new(Efreet_Ini *ini, const char *name)
|
icon_theme_directory_new(Efreet_Ini *ini, const char *name)
|
||||||
{
|
{
|
||||||
|
@ -314,6 +343,7 @@ icon_theme_directory_new(Efreet_Ini *ini, const char *name)
|
||||||
dir = NEW(Efreet_Icon_Theme_Directory, 1);
|
dir = NEW(Efreet_Icon_Theme_Directory, 1);
|
||||||
if (!dir) return NULL;
|
if (!dir) return NULL;
|
||||||
dir->name = eina_stringshare_add(name);
|
dir->name = eina_stringshare_add(name);
|
||||||
|
eina_array_push(strs, dir->name);
|
||||||
|
|
||||||
efreet_ini_section_set(ini, name);
|
efreet_ini_section_set(ini, name);
|
||||||
|
|
||||||
|
@ -369,33 +399,64 @@ icon_theme_directory_new(Efreet_Ini *ini, const char *name)
|
||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
icon_theme_index_read(Efreet_Cache_Icon_Theme *theme, const char *path)
|
icon_theme_index_read(Efreet_Cache_Icon_Theme *theme, const char *path)
|
||||||
{
|
{
|
||||||
/* TODO: return error value */
|
|
||||||
Efreet_Ini *ini;
|
Efreet_Ini *ini;
|
||||||
Efreet_Icon_Theme_Directory *dir;
|
Efreet_Icon_Theme_Directory *dir;
|
||||||
const char *tmp;
|
const char *tmp;
|
||||||
|
struct stat st;
|
||||||
|
char rp[PATH_MAX];
|
||||||
|
|
||||||
if (!theme || !path) return;
|
if (!theme || !path) return EINA_FALSE;
|
||||||
|
|
||||||
|
if (!realpath(path, rp)) return EINA_FALSE;
|
||||||
|
|
||||||
|
if (stat(rp, &st) < 0) return EINA_FALSE;
|
||||||
|
if (theme->path && !strcmp(theme->path, rp) && theme->last_cache_check >= (long long) st.st_mtime)
|
||||||
|
{
|
||||||
|
/* no change */
|
||||||
|
theme->valid = 1;
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
if (!theme->path || strcmp(theme->path, rp))
|
||||||
|
{
|
||||||
|
theme->path = eina_stringshare_add(rp);
|
||||||
|
eina_array_push(strs, theme->path);
|
||||||
|
}
|
||||||
|
if ((long long) st.st_mtime > theme->last_cache_check)
|
||||||
|
theme->last_cache_check = (long long) st.st_mtime;
|
||||||
|
theme->changed = 1;
|
||||||
|
|
||||||
ini = efreet_ini_new(path);
|
ini = efreet_ini_new(path);
|
||||||
if (!ini) return;
|
if (!ini) return EINA_FALSE;
|
||||||
if (!ini->data)
|
if (!ini->data)
|
||||||
{
|
{
|
||||||
efreet_ini_free(ini);
|
efreet_ini_free(ini);
|
||||||
return;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
efreet_ini_section_set(ini, "Icon Theme");
|
efreet_ini_section_set(ini, "Icon Theme");
|
||||||
tmp = efreet_ini_localestring_get(ini, "Name");
|
tmp = efreet_ini_localestring_get(ini, "Name");
|
||||||
if (tmp) theme->theme.name.name = eina_stringshare_add(tmp);
|
if (tmp)
|
||||||
|
{
|
||||||
|
theme->theme.name.name = eina_stringshare_add(tmp);
|
||||||
|
eina_array_push(strs, theme->theme.name.name);
|
||||||
|
}
|
||||||
|
|
||||||
tmp = efreet_ini_localestring_get(ini, "Comment");
|
tmp = efreet_ini_localestring_get(ini, "Comment");
|
||||||
if (tmp) theme->theme.comment = eina_stringshare_add(tmp);
|
if (tmp)
|
||||||
|
{
|
||||||
|
theme->theme.comment = eina_stringshare_add(tmp);
|
||||||
|
eina_array_push(strs, theme->theme.comment);
|
||||||
|
}
|
||||||
|
|
||||||
tmp = efreet_ini_string_get(ini, "Example");
|
tmp = efreet_ini_string_get(ini, "Example");
|
||||||
if (tmp) theme->theme.example_icon = eina_stringshare_add(tmp);
|
if (tmp)
|
||||||
|
{
|
||||||
|
theme->theme.example_icon = eina_stringshare_add(tmp);
|
||||||
|
eina_array_push(strs, theme->theme.example_icon);
|
||||||
|
}
|
||||||
|
|
||||||
theme->hidden = efreet_ini_boolean_get(ini, "Hidden");
|
theme->hidden = efreet_ini_boolean_get(ini, "Hidden");
|
||||||
|
|
||||||
|
@ -406,6 +467,7 @@ icon_theme_index_read(Efreet_Cache_Icon_Theme *theme, const char *path)
|
||||||
if (tmp)
|
if (tmp)
|
||||||
{
|
{
|
||||||
char *t, *s, *p;
|
char *t, *s, *p;
|
||||||
|
const char *i;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
len = strlen(tmp) + 1;
|
len = strlen(tmp) + 1;
|
||||||
|
@ -418,11 +480,15 @@ icon_theme_index_read(Efreet_Cache_Icon_Theme *theme, const char *path)
|
||||||
{
|
{
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
theme->theme.inherits = eina_list_append(theme->theme.inherits, eina_stringshare_add(s));
|
i = eina_stringshare_add(s);
|
||||||
|
theme->theme.inherits = eina_list_append(theme->theme.inherits, i);
|
||||||
|
eina_array_push(strs, i);
|
||||||
s = ++p;
|
s = ++p;
|
||||||
p = strchr(s, ',');
|
p = strchr(s, ',');
|
||||||
}
|
}
|
||||||
theme->theme.inherits = eina_list_append(theme->theme.inherits, eina_stringshare_add(s));
|
i = eina_stringshare_add(s);
|
||||||
|
theme->theme.inherits = eina_list_append(theme->theme.inherits, i);
|
||||||
|
eina_array_push(strs, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* make sure this one is done last as setting the directory will change
|
/* make sure this one is done last as setting the directory will change
|
||||||
|
@ -455,6 +521,8 @@ icon_theme_index_read(Efreet_Cache_Icon_Theme *theme, const char *path)
|
||||||
|
|
||||||
error:
|
error:
|
||||||
efreet_ini_free(ini);
|
efreet_ini_free(ini);
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -472,6 +540,9 @@ cache_theme_scan(const char *dir)
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *path;
|
const char *path;
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if (stat(entry->path, &st) < 0) continue;
|
||||||
|
|
||||||
if ((entry->type != EINA_FILE_DIR) &&
|
if ((entry->type != EINA_FILE_DIR) &&
|
||||||
(entry->type != EINA_FILE_LNK))
|
(entry->type != EINA_FILE_LNK))
|
||||||
|
@ -484,17 +555,26 @@ cache_theme_scan(const char *dir)
|
||||||
{
|
{
|
||||||
theme = NEW(Efreet_Cache_Icon_Theme, 1);
|
theme = NEW(Efreet_Cache_Icon_Theme, 1);
|
||||||
theme->theme.name.internal = eina_stringshare_add(name);
|
theme->theme.name.internal = eina_stringshare_add(name);
|
||||||
|
eina_array_push(strs, theme->theme.name.internal);
|
||||||
eina_hash_direct_add(icon_themes,
|
eina_hash_direct_add(icon_themes,
|
||||||
(void *)theme->theme.name.internal, theme);
|
(void *)theme->theme.name.internal, theme);
|
||||||
|
theme->changed = 1;
|
||||||
|
}
|
||||||
|
if ((long long) st.st_mtime > theme->last_cache_check)
|
||||||
|
{
|
||||||
|
theme->last_cache_check = (long long) st.st_mtime;
|
||||||
|
theme->changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
path = eina_stringshare_add(entry->path);
|
/* TODO: We need to handle change in order of included paths */
|
||||||
if (!eina_list_data_find(theme->theme.paths, path))
|
if (!eina_list_search_unsorted(theme->theme.paths, EINA_COMPARE_CB(strcmp), entry->path))
|
||||||
|
{
|
||||||
|
path = eina_stringshare_add(entry->path);
|
||||||
theme->theme.paths = eina_list_append(theme->theme.paths, path);
|
theme->theme.paths = eina_list_append(theme->theme.paths, path);
|
||||||
else
|
eina_array_push(strs, path);
|
||||||
eina_stringshare_del(path);
|
theme->changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
theme->last_cache_check = ecore_time_unix_get();
|
|
||||||
/* we're already valid so no reason to check for an index.theme file */
|
/* we're already valid so no reason to check for an index.theme file */
|
||||||
if (theme->valid) continue;
|
if (theme->valid) continue;
|
||||||
|
|
||||||
|
@ -502,7 +582,10 @@ cache_theme_scan(const char *dir)
|
||||||
memcpy(buf, entry->path, entry->path_length);
|
memcpy(buf, entry->path, entry->path_length);
|
||||||
memcpy(buf + entry->path_length, "/index.theme", sizeof("/index.theme"));
|
memcpy(buf + entry->path_length, "/index.theme", sizeof("/index.theme"));
|
||||||
if (ecore_file_exists(buf))
|
if (ecore_file_exists(buf))
|
||||||
icon_theme_index_read(theme, buf);
|
{
|
||||||
|
if (!icon_theme_index_read(theme, buf))
|
||||||
|
theme->valid = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
eina_iterator_free(it);
|
eina_iterator_free(it);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
@ -536,17 +619,12 @@ static void
|
||||||
icon_theme_free(Efreet_Cache_Icon_Theme *theme)
|
icon_theme_free(Efreet_Cache_Icon_Theme *theme)
|
||||||
{
|
{
|
||||||
void *data;
|
void *data;
|
||||||
Efreet_Icon_Theme_Directory *dir;
|
|
||||||
|
|
||||||
EINA_LIST_FREE(theme->theme.paths, data)
|
eina_list_free(theme->theme.paths);
|
||||||
eina_stringshare_del(data);
|
eina_list_free(theme->theme.inherits);
|
||||||
EINA_LIST_FREE(theme->theme.inherits, data)
|
EINA_LIST_FREE(theme->theme.directories, data)
|
||||||
eina_stringshare_del(data);
|
free(data);
|
||||||
EINA_LIST_FREE(theme->theme.directories, dir)
|
if (theme->dirs) efreet_hash_free(theme->dirs, free);
|
||||||
{
|
|
||||||
eina_stringshare_del(dir->name);
|
|
||||||
free(dir);
|
|
||||||
}
|
|
||||||
free(theme);
|
free(theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -577,7 +655,8 @@ main(int argc, char **argv)
|
||||||
Eina_Bool changed = EINA_FALSE;
|
Eina_Bool changed = EINA_FALSE;
|
||||||
int lockfd = -1;
|
int lockfd = -1;
|
||||||
int tmpfd = -1;
|
int tmpfd = -1;
|
||||||
int i;
|
char **keys;
|
||||||
|
int num, i;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
|
@ -668,6 +747,18 @@ main(int argc, char **argv)
|
||||||
theme_version->major = EFREET_ICON_CACHE_MAJOR;
|
theme_version->major = EFREET_ICON_CACHE_MAJOR;
|
||||||
theme_version->minor = EFREET_ICON_CACHE_MINOR;
|
theme_version->minor = EFREET_ICON_CACHE_MINOR;
|
||||||
|
|
||||||
|
keys = eet_list(theme_ef, "*", &num);
|
||||||
|
if (keys)
|
||||||
|
{
|
||||||
|
for (i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
if (!strncmp(keys[i], "efreet", 6)) continue;
|
||||||
|
theme = eet_data_read(theme_ef, theme_edd, keys[i]);
|
||||||
|
if (theme) eina_hash_direct_add(icon_themes, theme->theme.name.internal, theme);
|
||||||
|
}
|
||||||
|
free(keys);
|
||||||
|
}
|
||||||
|
|
||||||
/* scan themes */
|
/* scan themes */
|
||||||
cache_theme_scan(efreet_icon_deprecated_user_dir_get());
|
cache_theme_scan(efreet_icon_deprecated_user_dir_get());
|
||||||
cache_theme_scan(efreet_icon_user_dir_get());
|
cache_theme_scan(efreet_icon_user_dir_get());
|
||||||
|
@ -690,7 +781,7 @@ main(int argc, char **argv)
|
||||||
cache_theme_scan("/usr/share/pixmaps");
|
cache_theme_scan("/usr/share/pixmaps");
|
||||||
|
|
||||||
/* scan icons */
|
/* scan icons */
|
||||||
edd = efreet_icons_edd(EINA_TRUE);
|
edd = efreet_icons_edd();
|
||||||
it = eina_hash_iterator_data_new(icon_themes);
|
it = eina_hash_iterator_data_new(icon_themes);
|
||||||
EINA_ITERATOR_FOREACH(it, theme)
|
EINA_ITERATOR_FOREACH(it, theme)
|
||||||
{
|
{
|
||||||
|
@ -718,10 +809,16 @@ main(int argc, char **argv)
|
||||||
if (!cache->icons)
|
if (!cache->icons)
|
||||||
cache->icons = eina_hash_string_superfast_new(NULL);
|
cache->icons = eina_hash_string_superfast_new(NULL);
|
||||||
|
|
||||||
if (!cache->dirs)
|
changed = theme->changed = check_changed(theme);
|
||||||
cache->dirs = eina_hash_string_superfast_new(NULL);
|
if (theme->changed && theme->dirs)
|
||||||
|
{
|
||||||
|
efreet_hash_free(theme->dirs, free);
|
||||||
|
theme->dirs = NULL;
|
||||||
|
}
|
||||||
|
if (!theme->dirs)
|
||||||
|
theme->dirs = eina_hash_string_superfast_new(NULL);
|
||||||
|
|
||||||
if (cache_scan(&(theme->theme), themes, cache->icons, cache->dirs, &changed))
|
if (cache_scan(&(theme->theme), themes, cache->icons, theme->dirs, &changed))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "generated: '%s' %i (%i)\n",
|
fprintf(stderr, "generated: '%s' %i (%i)\n",
|
||||||
theme->theme.name.internal,
|
theme->theme.name.internal,
|
||||||
|
@ -734,7 +831,6 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
eina_hash_free(themes);
|
eina_hash_free(themes);
|
||||||
efreet_hash_free(cache->icons, EINA_FREE_CB(efreet_cache_icon_free));
|
efreet_hash_free(cache->icons, EINA_FREE_CB(efreet_cache_icon_free));
|
||||||
efreet_hash_free(cache->dirs, free);
|
|
||||||
free(cache);
|
free(cache);
|
||||||
|
|
||||||
/* TODO: Only write if changed */
|
/* TODO: Only write if changed */
|
||||||
|
@ -742,7 +838,7 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
eina_iterator_free(it);
|
eina_iterator_free(it);
|
||||||
|
|
||||||
edd = efreet_icons_fallback_edd(EINA_TRUE);
|
edd = efreet_icons_fallback_edd();
|
||||||
|
|
||||||
/* read fallback icons from the eet file */
|
/* read fallback icons from the eet file */
|
||||||
cache = eet_data_read(icon_ef, edd, EFREET_CACHE_ICON_FALLBACK);
|
cache = eet_data_read(icon_ef, edd, EFREET_CACHE_ICON_FALLBACK);
|
||||||
|
@ -759,11 +855,14 @@ main(int argc, char **argv)
|
||||||
if (!cache->icons)
|
if (!cache->icons)
|
||||||
cache->icons = eina_hash_string_superfast_new(NULL);
|
cache->icons = eina_hash_string_superfast_new(NULL);
|
||||||
|
|
||||||
if (!cache->dirs)
|
theme = eet_data_read(theme_ef, theme_edd, EFREET_CACHE_ICON_FALLBACK);
|
||||||
cache->dirs = eina_hash_string_superfast_new(NULL);
|
if (!theme)
|
||||||
|
theme = NEW(Efreet_Cache_Icon_Theme, 1);
|
||||||
|
if (!theme->dirs)
|
||||||
|
theme->dirs = eina_hash_string_superfast_new(NULL);
|
||||||
|
|
||||||
/* Save fallback in the right part */
|
/* Save fallback in the right part */
|
||||||
if (cache_fallback_scan(cache->icons, cache->dirs, &changed))
|
if (cache_fallback_scan(cache->icons, theme->dirs, &changed))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "generated: fallback %i (%i)\n", changed, eina_hash_population(cache->icons));
|
fprintf(stderr, "generated: fallback %i (%i)\n", changed, eina_hash_population(cache->icons));
|
||||||
if (changed)
|
if (changed)
|
||||||
|
@ -771,7 +870,6 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
efreet_hash_free(cache->icons, EINA_FREE_CB(efreet_cache_icon_fallback_free));
|
efreet_hash_free(cache->icons, EINA_FREE_CB(efreet_cache_icon_fallback_free));
|
||||||
efreet_hash_free(cache->dirs, free);
|
|
||||||
free(cache);
|
free(cache);
|
||||||
|
|
||||||
eina_hash_free(icon_themes);
|
eina_hash_free(icon_themes);
|
||||||
|
|
|
@ -384,7 +384,6 @@ _efreet_cache_free(Efreet_Cache_Icons *c)
|
||||||
if (!c) return NULL;
|
if (!c) return NULL;
|
||||||
|
|
||||||
if (c->icons) efreet_hash_free(c->icons, EINA_FREE_CB(efreet_cache_icon_free));
|
if (c->icons) efreet_hash_free(c->icons, EINA_FREE_CB(efreet_cache_icon_free));
|
||||||
if (c->dirs) efreet_hash_free(c->dirs, free);
|
|
||||||
free(c);
|
free(c);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -396,7 +395,6 @@ _efreet_cache_fallback_free(Efreet_Cache_Icons *c)
|
||||||
if (!c) return NULL;
|
if (!c) return NULL;
|
||||||
|
|
||||||
if (c->icons) efreet_hash_free(c->icons, EINA_FREE_CB(efreet_cache_icon_fallback_free));
|
if (c->icons) efreet_hash_free(c->icons, EINA_FREE_CB(efreet_cache_icon_fallback_free));
|
||||||
if (c->dirs) efreet_hash_free(c->dirs, free);
|
|
||||||
free(c);
|
free(c);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -423,7 +421,7 @@ efreet_icon_directory_edd(void)
|
||||||
* Needs EAPI because of helper binaries
|
* Needs EAPI because of helper binaries
|
||||||
*/
|
*/
|
||||||
EAPI Eet_Data_Descriptor *
|
EAPI Eet_Data_Descriptor *
|
||||||
efreet_icons_edd(Eina_Bool include_dirs)
|
efreet_icons_edd(void)
|
||||||
{
|
{
|
||||||
Eet_Data_Descriptor_Class eddc;
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
@ -464,10 +462,6 @@ efreet_icons_edd(Eina_Bool include_dirs)
|
||||||
EET_DATA_DESCRIPTOR_ADD_HASH(icons_edd, Efreet_Cache_Icons,
|
EET_DATA_DESCRIPTOR_ADD_HASH(icons_edd, Efreet_Cache_Icons,
|
||||||
"icons", icons, icon_edd);
|
"icons", icons, icon_edd);
|
||||||
|
|
||||||
if (include_dirs)
|
|
||||||
EET_DATA_DESCRIPTOR_ADD_HASH(icons_edd, Efreet_Cache_Icons,
|
|
||||||
"dirs", dirs, efreet_icon_directory_edd());
|
|
||||||
|
|
||||||
return icons_edd;
|
return icons_edd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,7 +533,7 @@ efreet_icon_theme_edd(Eina_Bool cache)
|
||||||
* Needs EAPI because of helper binaries
|
* Needs EAPI because of helper binaries
|
||||||
*/
|
*/
|
||||||
EAPI Eet_Data_Descriptor *
|
EAPI Eet_Data_Descriptor *
|
||||||
efreet_icons_fallback_edd(Eina_Bool include_dirs)
|
efreet_icons_fallback_edd(void)
|
||||||
{
|
{
|
||||||
Eet_Data_Descriptor_Class eddc;
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
@ -559,10 +553,6 @@ efreet_icons_fallback_edd(Eina_Bool include_dirs)
|
||||||
EET_DATA_DESCRIPTOR_ADD_HASH(fallback_edd, Efreet_Cache_Icons,
|
EET_DATA_DESCRIPTOR_ADD_HASH(fallback_edd, Efreet_Cache_Icons,
|
||||||
"icons", icons, icon_fallback_edd);
|
"icons", icons, icon_fallback_edd);
|
||||||
|
|
||||||
if (include_dirs)
|
|
||||||
EET_DATA_DESCRIPTOR_ADD_HASH(fallback_edd, Efreet_Cache_Icons,
|
|
||||||
"dirs", dirs, efreet_icon_directory_edd());
|
|
||||||
|
|
||||||
return fallback_edd;
|
return fallback_edd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,7 +641,7 @@ efreet_cache_icon_find(Efreet_Icon_Theme *theme, const char *icon)
|
||||||
if (!theme_name)
|
if (!theme_name)
|
||||||
{
|
{
|
||||||
INFO("loading theme %s", theme->name.internal);
|
INFO("loading theme %s", theme->name.internal);
|
||||||
theme_cache = eet_data_read(icon_cache, efreet_icons_edd(EINA_FALSE), theme->name.internal);
|
theme_cache = eet_data_read(icon_cache, efreet_icons_edd(), theme->name.internal);
|
||||||
if (theme_cache && !theme_cache->icons)
|
if (theme_cache && !theme_cache->icons)
|
||||||
theme_cache->icons = eina_hash_string_superfast_new(NULL);
|
theme_cache->icons = eina_hash_string_superfast_new(NULL);
|
||||||
if (theme_cache)
|
if (theme_cache)
|
||||||
|
@ -671,7 +661,7 @@ efreet_cache_icon_fallback_find(const char *icon)
|
||||||
if (!fallback_cache)
|
if (!fallback_cache)
|
||||||
{
|
{
|
||||||
INFO("loading fallback cache");
|
INFO("loading fallback cache");
|
||||||
fallback_cache = eet_data_read(icon_cache, efreet_icons_fallback_edd(EINA_FALSE), EFREET_CACHE_ICON_FALLBACK);
|
fallback_cache = eet_data_read(icon_cache, efreet_icons_fallback_edd(), EFREET_CACHE_ICON_FALLBACK);
|
||||||
if (fallback_cache && !fallback_cache->icons)
|
if (fallback_cache && !fallback_cache->icons)
|
||||||
fallback_cache->icons = eina_hash_string_superfast_new(NULL);
|
fallback_cache->icons = eina_hash_string_superfast_new(NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,8 @@ EAPI Eet_Data_Descriptor *efreet_hash_array_string_edd(void);
|
||||||
EAPI Eet_Data_Descriptor *efreet_hash_string_edd(void);
|
EAPI Eet_Data_Descriptor *efreet_hash_string_edd(void);
|
||||||
EAPI Eet_Data_Descriptor *efreet_array_string_edd(void);
|
EAPI Eet_Data_Descriptor *efreet_array_string_edd(void);
|
||||||
EAPI Eet_Data_Descriptor *efreet_icon_theme_edd(Eina_Bool cache);
|
EAPI Eet_Data_Descriptor *efreet_icon_theme_edd(Eina_Bool cache);
|
||||||
EAPI Eet_Data_Descriptor *efreet_icons_edd(Eina_Bool include_dirs);
|
EAPI Eet_Data_Descriptor *efreet_icons_edd(void);
|
||||||
EAPI Eet_Data_Descriptor *efreet_icons_fallback_edd(Eina_Bool include_dirs);
|
EAPI Eet_Data_Descriptor *efreet_icons_fallback_edd(void);
|
||||||
|
|
||||||
typedef struct Efreet_Cache_Icon_Theme Efreet_Cache_Icon_Theme;
|
typedef struct Efreet_Cache_Icon_Theme Efreet_Cache_Icon_Theme;
|
||||||
|
|
||||||
|
|
|
@ -133,7 +133,6 @@ typedef struct _Efreet_Cache_Fallback_Icon Efreet_Cache_Fallback_Icon;
|
||||||
struct _Efreet_Cache_Icons
|
struct _Efreet_Cache_Icons
|
||||||
{
|
{
|
||||||
Eina_Hash *icons;
|
Eina_Hash *icons;
|
||||||
Eina_Hash *dirs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Efreet_Cache_Directory
|
struct _Efreet_Cache_Directory
|
||||||
|
|
|
@ -82,7 +82,7 @@ main(int argc, char **argv)
|
||||||
theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ);
|
theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ);
|
||||||
if (!theme_ef) return -1;
|
if (!theme_ef) return -1;
|
||||||
|
|
||||||
edd = efreet_icons_edd(EINA_FALSE);
|
edd = efreet_icons_edd();
|
||||||
if (!edd) return -1;
|
if (!edd) return -1;
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
|
|
Loading…
Reference in New Issue