summaryrefslogtreecommitdiff
path: root/gtk/gtkicontheme.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2006-04-18 13:58:30 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-04-18 13:58:30 +0000
commitda63cf980552f138cad22911dc42262674242818 (patch)
treedb183a83f6eafb61cc2f38987a1e83ec311c1d86 /gtk/gtkicontheme.c
parent27f53394bef782f7beb83e4516ec267c6b660cda (diff)
downloadgtk+-da63cf980552f138cad22911dc42262674242818.tar.gz
Apply a patch by Paolo Borelli to factor out a strip_suffix() function and
2006-04-18 Matthias Clasen <mclasen@redhat.com> * gtk/gtkiconcache.c: Apply a patch by Paolo Borelli to factor out a strip_suffix() function and save some memory. (#338307)
Diffstat (limited to 'gtk/gtkicontheme.c')
-rw-r--r--gtk/gtkicontheme.c43
1 files changed, 26 insertions, 17 deletions
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index 5cad504433..0fad206840 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -1026,15 +1026,27 @@ free_unthemed_icon (UnthemedIcon *unthemed_icon)
g_slice_free (UnthemedIcon, unthemed_icon);
}
+static char *
+strip_suffix (const char *filename)
+{
+ const char *dot;
+
+ dot = strrchr (filename, '.');
+
+ if (dot == NULL)
+ return g_strdup (filename);
+
+ return g_strndup (filename, dot - filename);
+}
+
static void
load_themes (GtkIconTheme *icon_theme)
{
GtkIconThemePrivate *priv;
GDir *gdir;
int base;
- char *dir, *base_name, *dot;
+ char *dir;
const char *file;
- char *abs_file;
UnthemedIcon *unthemed_icon;
IconSuffix old_suffix, new_suffix;
GTimeVal tv;
@@ -1085,14 +1097,12 @@ load_themes (GtkIconTheme *icon_theme)
if (new_suffix != ICON_SUFFIX_NONE)
{
+ char *abs_file;
+ char *base_name;
+
abs_file = g_build_filename (dir, file, NULL);
-
- base_name = g_strdup (file);
-
- dot = strrchr (base_name, '.');
- if (dot)
- *dot = 0;
-
+ base_name = strip_suffix (file);
+
if ((unthemed_icon = g_hash_table_lookup (priv->unthemed_icons,
base_name)))
{
@@ -2161,9 +2171,6 @@ scan_directory (GtkIconThemePrivate *icon_theme,
{
GDir *gdir;
const char *name;
- char *base_name, *dot;
- char *path;
- IconSuffix suffix, hash_suffix;
GTK_NOTE (ICONTHEME,
g_print ("scanning directory %s\n", full_dir));
@@ -2177,6 +2184,10 @@ scan_directory (GtkIconThemePrivate *icon_theme,
while ((name = g_dir_read_name (gdir)))
{
+ char *path;
+ char *base_name;
+ IconSuffix suffix, hash_suffix;
+
if (g_str_has_suffix (name, ".icon"))
{
if (dir->icon_data == NULL)
@@ -2195,11 +2206,9 @@ scan_directory (GtkIconThemePrivate *icon_theme,
suffix = suffix_from_name (name);
if (suffix == ICON_SUFFIX_NONE)
continue;
-
- base_name = g_strdup (name);
- dot = strrchr (base_name, '.');
- *dot = 0;
-
+
+ base_name = strip_suffix (name);
+
hash_suffix = GPOINTER_TO_INT (g_hash_table_lookup (dir->icons, base_name));
g_hash_table_replace (dir->icons, base_name, GUINT_TO_POINTER (hash_suffix| suffix));
g_hash_table_insert (icon_theme->all_icons, base_name, NULL);