diff --git a/legacy/efreet/src/lib/efreet_cache.c b/legacy/efreet/src/lib/efreet_cache.c index b7c16376d3..e8962fc002 100644 --- a/legacy/efreet/src/lib/efreet_cache.c +++ b/legacy/efreet/src/lib/efreet_cache.c @@ -151,6 +151,7 @@ efreet_cache_shutdown(void) theme_name = NULL; icon_cache = efreet_cache_close(icon_cache); + efreet_icon_themes_flush(); icon_theme_cache = efreet_cache_close(icon_theme_cache); #endif @@ -850,6 +851,7 @@ cache_update_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__, } icon_cache = efreet_cache_close(icon_cache); + efreet_icon_themes_flush(); icon_theme_cache = efreet_cache_close(icon_theme_cache); ev = NEW(Efreet_Event_Cache_Update, 1); diff --git a/legacy/efreet/src/lib/efreet_icon.c b/legacy/efreet/src/lib/efreet_icon.c index 66009494ed..2c6bd26b1c 100644 --- a/legacy/efreet/src/lib/efreet_icon.c +++ b/legacy/efreet/src/lib/efreet_icon.c @@ -352,6 +352,18 @@ efreet_icon_theme_find(const char *theme_name) return theme; } +#ifdef ICON_CACHE +/** + * @internal + * @brief Clears icon theme cache + */ +void +efreet_icon_themes_flush(void) +{ + IF_FREE_HASH(efreet_icon_themes); +} +#endif + /** * @internal * @param icon: The icon name to strip extension diff --git a/legacy/efreet/src/lib/efreet_private.h b/legacy/efreet/src/lib/efreet_private.h index d35688ca2b..243080ee2e 100644 --- a/legacy/efreet/src/lib/efreet_private.h +++ b/legacy/efreet/src/lib/efreet_private.h @@ -241,6 +241,8 @@ Efreet_Cache_Fallback_Icon *efreet_cache_icon_fallback_find(const char *icon); Efreet_Icon_Theme *efreet_cache_icon_theme_find(const char *theme); void efreet_cache_icon_theme_free(Efreet_Icon_Theme *theme); char **efreet_cache_icon_theme_name_list(int *num); + +void efreet_icon_themes_flush(void); #endif EAPI void efreet_hash_free(Eina_Hash *hash, Eina_Free_Cb free_cb);