[gtk/wip/baedert/for-master: 138/146] icontheme: Remove symbolic pixbuf cache



commit f7b31751236b72e0ddc017986be9ecfbff339229
Author: Timm Bäder <mail baedert org>
Date:   Sun Sep 1 16:29:30 2019 +0200

    icontheme: Remove symbolic pixbuf cache
    
    We recolor icons on via color matrix nodes these days, so this cache is
    basically unused.

 gtk/gtkicontheme.c | 197 ++++++-----------------------------------------------
 1 file changed, 21 insertions(+), 176 deletions(-)
---
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index e90240812c..d8be809a60 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -204,17 +204,6 @@ typedef struct {
   GtkIconLookupFlags flags;
 } IconInfoKey;
 
-typedef struct _SymbolicPixbufCache SymbolicPixbufCache;
-
-struct _SymbolicPixbufCache {
-  GdkPixbuf *pixbuf;
-  GdkRGBA  fg;
-  GdkRGBA  success_color;
-  GdkRGBA  warning_color;
-  GdkRGBA  error_color;
-  SymbolicPixbufCache *next;
-};
-
 struct _GtkIconInfoClass
 {
   GObjectClass parent_class;
@@ -267,8 +256,6 @@ struct _GtkIconInfo
   gdouble unscaled_scale;
   gdouble scale;
 
-  SymbolicPixbufCache *symbolic_pixbuf_cache;
-
   gint symbolic_width;
   gint symbolic_height;
 };
@@ -1469,85 +1456,6 @@ ensure_valid_themes (GtkIconTheme *icon_theme)
   priv->loading_themes = FALSE;
 }
 
-static SymbolicPixbufCache *
-symbolic_pixbuf_cache_new (GdkPixbuf           *pixbuf,
-                           const GdkRGBA       *fg,
-                           const GdkRGBA       *success_color,
-                           const GdkRGBA       *warning_color,
-                           const GdkRGBA       *error_color,
-                           SymbolicPixbufCache *next)
-{
-  SymbolicPixbufCache *cache;
-
-  cache = g_new0 (SymbolicPixbufCache, 1);
-  cache->pixbuf = g_object_ref (pixbuf);
-  if (fg)
-    cache->fg = *fg;
-  if (success_color)
-    cache->success_color = *success_color;
-  if (warning_color)
-    cache->warning_color = *warning_color;
-  if (error_color)
-    cache->error_color = *error_color;
-  cache->next = next;
-  return cache;
-}
-
-static gboolean
-rgba_matches (const GdkRGBA *a,
-              const GdkRGBA *b)
-{
-  GdkRGBA transparent = { 0 };
-
-  /* For matching we treat unset colors as transparent rather
-     than default, which works as well, because transparent
-     will never be used for real symbolic icon colors */
-  if (a == NULL)
-    a = &transparent;
-
-  return
-    fabs(a->red - b->red) < 0.0001 &&
-    fabs(a->green - b->green) < 0.0001 &&
-    fabs(a->blue - b->blue) < 0.0001 &&
-    fabs(a->alpha - b->alpha) < 0.0001;
-}
-
-static SymbolicPixbufCache *
-symbolic_pixbuf_cache_matches (SymbolicPixbufCache *cache,
-                               const GdkRGBA       *fg,
-                               const GdkRGBA       *success_color,
-                               const GdkRGBA       *warning_color,
-                               const GdkRGBA       *error_color)
-{
-  while (cache != NULL)
-    {
-      if (rgba_matches (fg, &cache->fg) &&
-          rgba_matches (success_color, &cache->success_color) &&
-          rgba_matches (warning_color, &cache->warning_color) &&
-          rgba_matches (error_color, &cache->error_color))
-        return cache;
-
-      cache = cache->next;
-    }
-
-  return NULL;
-}
-
-static void
-symbolic_pixbuf_cache_free (SymbolicPixbufCache *cache)
-{
-  SymbolicPixbufCache *next;
-
-  while (cache != NULL)
-    {
-      next = cache->next;
-      g_object_unref (cache->pixbuf);
-      g_free (cache);
-
-      cache = next;
-    }
-}
-
 static inline gboolean
 icon_name_is_symbolic (const gchar *icon_name,
                        int          icon_name_len)
@@ -3354,8 +3262,6 @@ gtk_icon_info_finalize (GObject *object)
   g_clear_object (&icon_info->cache_pixbuf);
   g_clear_error (&icon_info->load_error);
 
-  symbolic_pixbuf_cache_free (icon_info->symbolic_pixbuf_cache);
-
   G_OBJECT_CLASS (gtk_icon_info_parent_class)->finalize (object);
 }
 
@@ -4129,21 +4035,11 @@ gtk_icon_info_load_symbolic_internal (GtkIconInfo    *icon_info,
                                       const GdkRGBA  *success_color,
                                       const GdkRGBA  *warning_color,
                                       const GdkRGBA  *error_color,
-                                      gboolean        use_cache,
                                       GError        **error)
 {
   GdkPixbuf *pixbuf;
-  SymbolicPixbufCache *symbolic_cache;
   char *icon_uri;
 
-  if (use_cache)
-    {
-      symbolic_cache = symbolic_pixbuf_cache_matches (icon_info->symbolic_pixbuf_cache,
-                                                      fg, success_color, warning_color, error_color);
-      if (symbolic_cache && symbolic_cache->pixbuf)
-          return g_object_ref (symbolic_cache->pixbuf);
-    }
-
   icon_uri = g_file_get_uri (icon_info->icon_file);
   if (g_str_has_suffix (icon_uri, ".symbolic.png"))
     pixbuf = gtk_icon_info_load_symbolic_png (icon_info, fg, success_color, warning_color, error_color, 
error);
@@ -4152,21 +4048,7 @@ gtk_icon_info_load_symbolic_internal (GtkIconInfo    *icon_info,
 
   g_free (icon_uri);
 
-  if (pixbuf != NULL)
-    {
-      if (use_cache)
-        {
-          icon_info->symbolic_pixbuf_cache =
-            symbolic_pixbuf_cache_new (pixbuf, fg, success_color, warning_color, error_color,
-                                       icon_info->symbolic_pixbuf_cache);
-          g_object_unref (pixbuf);
-          return g_object_ref (icon_info->symbolic_pixbuf_cache->pixbuf);
-        }
-      else
-        return pixbuf;
-    }
-
-  return NULL;
+  return pixbuf;
 }
 
 /**
@@ -4230,7 +4112,6 @@ gtk_icon_info_load_symbolic (GtkIconInfo    *icon_info,
   pixbuf = gtk_icon_info_load_symbolic_internal (icon_info,
                                                  fg, success_color,
                                                  warning_color, error_color,
-                                                 TRUE,
                                                  error);
 
   if (pixbuf)
@@ -4332,7 +4213,6 @@ gtk_icon_info_load_symbolic_for_context (GtkIconInfo      *icon_info,
   pixbuf = gtk_icon_info_load_symbolic_internal (icon_info,
                                                  &fg, &success_color,
                                                  &warning_color, &error_color,
-                                                 TRUE,
                                                  error);
 
   if (pixbuf)
@@ -4401,7 +4281,6 @@ load_symbolic_icon_thread  (GTask        *task,
                                                  data->success_color_set ? &data->success_color : NULL,
                                                  data->warning_color_set ? &data->warning_color : NULL,
                                                  data->error_color_set ? &data->error_color : NULL,
-                                                 FALSE,
                                                  &error);
   if (pixbuf == NULL)
     g_task_return_error (task, error);
@@ -4443,8 +4322,6 @@ gtk_icon_info_load_symbolic_async (GtkIconInfo          *icon_info,
 {
   GTask *task;
   AsyncSymbolicData *data;
-  SymbolicPixbufCache *symbolic_cache;
-  GdkPixbuf *pixbuf;
 
   g_return_if_fail (icon_info != NULL);
   g_return_if_fail (fg != NULL);
@@ -4462,42 +4339,32 @@ gtk_icon_info_load_symbolic_async (GtkIconInfo          *icon_info,
     }
   else
     {
-      symbolic_cache = symbolic_pixbuf_cache_matches (icon_info->symbolic_pixbuf_cache,
-                                                      fg, success_color, warning_color, error_color);
-      if (symbolic_cache)
+      if (fg)
         {
-          pixbuf = g_object_ref (symbolic_cache->pixbuf);
-          g_task_return_pointer (task, pixbuf, g_object_unref);
+          data->fg = *fg;
+          data->fg_set = TRUE;
         }
-      else
-        {
-          if (fg)
-            {
-              data->fg = *fg;
-              data->fg_set = TRUE;
-            }
-
-          if (success_color)
-            {
-              data->success_color = *success_color;
-              data->success_color_set = TRUE;
-            }
 
-          if (warning_color)
-            {
-              data->warning_color = *warning_color;
-              data->warning_color_set = TRUE;
-            }
+      if (success_color)
+        {
+          data->success_color = *success_color;
+          data->success_color_set = TRUE;
+        }
 
-          if (error_color)
-            {
-              data->error_color = *error_color;
-              data->error_color_set = TRUE;
-            }
+      if (warning_color)
+        {
+          data->warning_color = *warning_color;
+          data->warning_color_set = TRUE;
+        }
 
-          data->dup = icon_info_dup (icon_info);
-          g_task_run_in_thread (task, load_symbolic_icon_thread);
+      if (error_color)
+        {
+          data->error_color = *error_color;
+          data->error_color_set = TRUE;
         }
+
+      data->dup = icon_info_dup (icon_info);
+      g_task_run_in_thread (task, load_symbolic_icon_thread);
     }
   g_object_unref (task);
 }
@@ -4526,7 +4393,6 @@ gtk_icon_info_load_symbolic_finish (GtkIconInfo   *icon_info,
 {
   GTask *task = G_TASK (result);
   AsyncSymbolicData *data = g_task_get_task_data (task);
-  SymbolicPixbufCache *symbolic_cache;
   GdkPixbuf *pixbuf;
   GdkTexture *texture;
 
@@ -4538,27 +4404,6 @@ gtk_icon_info_load_symbolic_finish (GtkIconInfo   *icon_info,
       pixbuf = g_task_propagate_pointer (task, NULL);
 
       g_assert (pixbuf != NULL); /* we checked for !had_error above */
-
-      symbolic_cache = symbolic_pixbuf_cache_matches (icon_info->symbolic_pixbuf_cache,
-                                                      data->fg_set ? &data->fg : NULL,
-                                                      data->success_color_set ? &data->success_color : NULL,
-                                                      data->warning_color_set ? &data->warning_color : NULL,
-                                                      data->error_color_set ? &data->error_color : NULL);
-
-      if (symbolic_cache == NULL)
-        {
-          symbolic_cache = icon_info->symbolic_pixbuf_cache =
-            symbolic_pixbuf_cache_new (pixbuf,
-                                       data->fg_set ? &data->fg : NULL,
-                                       data->success_color_set ? &data->success_color : NULL,
-                                       data->warning_color_set ? &data->warning_color : NULL,
-                                       data->error_color_set ? &data->error_color : NULL,
-                                       icon_info->symbolic_pixbuf_cache);
-        }
-
-      g_object_unref (pixbuf);
-
-      pixbuf = g_object_ref (symbolic_cache->pixbuf);
     }
   else
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]