ignore missing icons for 5 seconds.

SVN revision: 35480
This commit is contained in:
Sebastian Dransfeld 2008-08-14 16:59:41 +00:00
parent c35c6bafa3
commit 25c29b62a3
2 changed files with 19 additions and 12 deletions

View File

@ -344,13 +344,20 @@ efreet_icon_path_find(const char *theme_name, const char *icon, const char *size
if (cache) if (cache)
{ {
ecore_list_remove(efreet_icon_cache); ecore_list_remove(efreet_icon_cache);
if (!stat(cache->path, &st) && st.st_mtime == cache->lasttime) if (!cache->path)
{
if (ecore_time_get() < (cache->lasttime + 5))
{
ecore_list_prepend(efreet_icon_cache, cache);
return NULL;
}
}
else if (!stat(cache->path, &st) && st.st_mtime == cache->lasttime)
{ {
ecore_list_prepend(efreet_icon_cache, cache); ecore_list_prepend(efreet_icon_cache, cache);
return strdup(cache->path); return strdup(cache->path);
} }
else efreet_icon_cache_free(cache);
efreet_icon_cache_free(cache);
} }
theme = efreet_icon_find_theme_check(theme_name); theme = efreet_icon_find_theme_check(theme_name);
@ -372,17 +379,17 @@ efreet_icon_path_find(const char *theme_name, const char *icon, const char *size
*/ */
if (!value) value = efreet_icon_fallback_icon(icon); if (!value) value = efreet_icon_fallback_icon(icon);
cache = NEW(Efreet_Icon_Cache, 1);
cache->key = strdup(key);
if ((value) && !stat(value, &st)) if ((value) && !stat(value, &st))
{ {
Efreet_Icon_Cache *cache;
cache = NEW(Efreet_Icon_Cache, 1);
cache->key = strdup(key);
cache->path = strdup(value); cache->path = strdup(value);
cache->lasttime = st.st_mtime; cache->lasttime = st.st_mtime;
ecore_list_prepend(efreet_icon_cache, cache);
efreet_icon_cache_flush();
} }
else
cache->lasttime = ecore_time_get();
ecore_list_prepend(efreet_icon_cache, cache);
efreet_icon_cache_flush();
return value; return value;
} }
@ -451,11 +458,11 @@ efreet_icon_list_find(const char *theme_name, Ecore_List *icons,
* @brief Retrieves all of the information about the given icon. * @brief Retrieves all of the information about the given icon.
*/ */
EAPI Efreet_Icon * EAPI Efreet_Icon *
efreet_icon_find(const char *theme, const char *icon, const char *size) efreet_icon_find(const char *theme_name, const char *icon, const char *size)
{ {
char *path; char *path;
path = efreet_icon_path_find(theme, icon, size); path = efreet_icon_path_find(theme_name, icon, size);
if (path) if (path)
{ {
Efreet_Icon *icon; Efreet_Icon *icon;

View File

@ -170,7 +170,7 @@ EAPI Efreet_Icon *efreet_icon_find(const char *theme_name,
EAPI char *efreet_icon_list_find(const char *theme_name, EAPI char *efreet_icon_list_find(const char *theme_name,
Ecore_List *icons, Ecore_List *icons,
const char *size); const char *size);
EAPI char *efreet_icon_path_find(const char *theme, EAPI char *efreet_icon_path_find(const char *theme_name,
const char *icon, const char *icon,
const char *size); const char *size);
EAPI void efreet_icon_free(Efreet_Icon *icon); EAPI void efreet_icon_free(Efreet_Icon *icon);