mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-18 17:30:10 +00:00
GtkIconTheme: Stop using the all_icons hash table
This hash table was used in gtk_icon_theme_has_icon; we can implement that function just as well without it and save some memory.
This commit is contained in:
parent
a8939e7cff
commit
11ec8f7285
@ -334,6 +334,8 @@ static GtkIconInfo *theme_lookup_icon (IconTheme *theme,
|
||||
static void theme_list_icons (IconTheme *theme,
|
||||
GHashTable *icons,
|
||||
GQuark context);
|
||||
static gboolean theme_has_icon (IconTheme *theme,
|
||||
const gchar *icon_name);
|
||||
static void theme_list_contexts (IconTheme *theme,
|
||||
GHashTable *contexts);
|
||||
static void theme_subdir_load (GtkIconTheme *icon_theme,
|
||||
@ -2326,9 +2328,11 @@ gtk_icon_theme_has_icon (GtkIconTheme *icon_theme,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (g_hash_table_lookup_extended (priv->all_icons,
|
||||
icon_name, NULL, NULL))
|
||||
return TRUE;
|
||||
for (l = priv->themes; l; l = l->next)
|
||||
{
|
||||
if (theme_has_icon (l->data, icon_name))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (icon_theme_builtin_icons &&
|
||||
g_hash_table_lookup_extended (icon_theme_builtin_icons,
|
||||
@ -2990,6 +2994,31 @@ theme_list_icons (IconTheme *theme,
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
theme_has_icon (IconTheme *theme,
|
||||
const gchar *icon_name)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
for (l = theme->dirs; l; l = l->next)
|
||||
{
|
||||
IconThemeDir *dir = l->data;
|
||||
|
||||
if (dir->cache)
|
||||
{
|
||||
if (_gtk_icon_cache_has_icon (dir->cache, icon_name))
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (g_hash_table_lookup (dir->icons, icon_name) != NULL)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
theme_list_contexts (IconTheme *theme,
|
||||
GHashTable *contexts)
|
||||
|
Loading…
Reference in New Issue
Block a user