[metacity/simplify-iconcache: 9/11] iconcache: simplify ideal size handling



commit 61d4b97a7a9cabc20624b91ac1e711ddaf22feb2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Thu Mar 19 16:51:42 2020 +0200

    iconcache: simplify ideal size handling
    
    ideal_width and ideal_height has always same value, same with
    ideal_mini_width and ideal_mini_height.

 libmetacity/meta-frame-layout.c |   2 +-
 src/core/iconcache.c            | 152 ++++++++++++++++++++++------------------
 src/core/iconcache.h            |  10 +--
 src/core/window.c               |   9 ++-
 src/include/common.h            |   8 ---
 src/include/ui.h                |   7 +-
 src/ui/ui.c                     |  12 ++--
 7 files changed, 104 insertions(+), 96 deletions(-)
---
diff --git a/libmetacity/meta-frame-layout.c b/libmetacity/meta-frame-layout.c
index 9634a9e0..32cf7a1e 100644
--- a/libmetacity/meta-frame-layout.c
+++ b/libmetacity/meta-frame-layout.c
@@ -122,7 +122,7 @@ meta_frame_layout_new  (void)
    * https://git.gnome.org/browse/gtk+/tree/gtk/gtkheaderbar.c?h=gtk-3-14#n53
    */
   layout->gtk.titlebar_spacing = 6;
-  layout->gtk.icon_size = 16; /* was META_MINI_ICON_WIDTH from common.h */
+  layout->gtk.icon_size = 16;
 
   /* Fill with -1 values to detect invalid themes */
   layout->metacity.left_width = -1;
diff --git a/src/core/iconcache.c b/src/core/iconcache.c
index 66b8711e..0b68e668 100644
--- a/src/core/iconcache.c
+++ b/src/core/iconcache.c
@@ -29,26 +29,23 @@
 /* The icon-reading code is also in libwnck, please sync bugfixes */
 
 static void
-get_fallback_icons (MetaScreen     *screen,
-                    GdkPixbuf     **iconp,
-                    int             ideal_width,
-                    int             ideal_height,
-                    GdkPixbuf     **mini_iconp,
-                    int             ideal_mini_width,
-                    int             ideal_mini_height)
+get_fallback_icons (MetaScreen  *screen,
+                    GdkPixbuf  **iconp,
+                    int          ideal_size,
+                    GdkPixbuf  **mini_iconp,
+                    int          ideal_mini_size)
 {
   /* we don't scale, should be fixed if we ever un-hardcode the icon
    * size
    */
-  *iconp = meta_ui_get_default_window_icon (screen->ui);
-  *mini_iconp = meta_ui_get_default_mini_icon (screen->ui);
+  *iconp = meta_ui_get_default_window_icon (screen->ui, ideal_size);
+  *mini_iconp = meta_ui_get_default_mini_icon (screen->ui, ideal_mini_size);
 }
 
 static gboolean
 find_best_size (gulong  *data,
                 gulong   nitems,
-                int      ideal_width,
-                int      ideal_height,
+                int      ideal_size,
                 int     *width,
                 int     *height,
                 gulong **start)
@@ -88,7 +85,6 @@ find_best_size (gulong  *data,
       else
         {
           /* work with averages */
-          const int ideal_size = (ideal_width + ideal_height) / 2;
           int best_size = (best_w + best_h) / 2;
           int this_size = (w + h) / 2;
 
@@ -164,18 +160,16 @@ argbdata_to_pixdata (gulong *argb_data, int len, guchar **pixdata)
 }
 
 static gboolean
-read_rgb_icon (MetaDisplay   *display,
-               Window         xwindow,
-               int            ideal_width,
-               int            ideal_height,
-               int            ideal_mini_width,
-               int            ideal_mini_height,
-               int           *width,
-               int           *height,
-               guchar       **pixdata,
-               int           *mini_width,
-               int           *mini_height,
-               guchar       **mini_pixdata)
+read_rgb_icon (MetaDisplay  *display,
+               Window        xwindow,
+               int           ideal_size,
+               int           ideal_mini_size,
+               int          *width,
+               int          *height,
+               guchar      **pixdata,
+               int          *mini_width,
+               int          *mini_height,
+               guchar      **mini_pixdata)
 {
   Atom type;
   int format;
@@ -212,17 +206,23 @@ read_rgb_icon (MetaDisplay   *display,
 
   data_as_long = (gulong *)data;
 
-  if (!find_best_size (data_as_long, nitems,
-                       ideal_width, ideal_height,
-                       &w, &h, &best))
+  if (!find_best_size (data_as_long,
+                       nitems,
+                       ideal_size,
+                       &w,
+                       &h,
+                       &best))
     {
       XFree (data);
       return FALSE;
     }
 
-  if (!find_best_size (data_as_long, nitems,
-                       ideal_mini_width, ideal_mini_height,
-                       &mini_w, &mini_h, &best_mini))
+  if (!find_best_size (data_as_long,
+                       nitems,
+                       ideal_mini_size,
+                       &mini_w,
+                       &mini_h,
+                       &best_mini))
     {
       XFree (data);
       return FALSE;
@@ -358,15 +358,13 @@ apply_mask (GdkPixbuf *pixbuf,
 }
 
 static gboolean
-try_pixmap_and_mask (MetaDisplay *display,
-                     Pixmap       src_pixmap,
-                     Pixmap       src_mask,
-                     GdkPixbuf  **iconp,
-                     int          ideal_width,
-                     int          ideal_height,
-                     GdkPixbuf  **mini_iconp,
-                     int          ideal_mini_width,
-                     int          ideal_mini_height)
+try_pixmap_and_mask (MetaDisplay  *display,
+                     Pixmap        src_pixmap,
+                     Pixmap        src_mask,
+                     GdkPixbuf   **iconp,
+                     int           ideal_size,
+                     GdkPixbuf   **mini_iconp,
+                     int           ideal_mini_size)
 {
   GdkPixbuf *unscaled = NULL;
   GdkPixbuf *mask = NULL;
@@ -416,13 +414,13 @@ try_pixmap_and_mask (MetaDisplay *display,
     {
       *iconp =
         gdk_pixbuf_scale_simple (unscaled,
-                                 ideal_width,
-                                 ideal_height,
+                                 ideal_size,
+                                 ideal_size,
                                  GDK_INTERP_BILINEAR);
       *mini_iconp =
         gdk_pixbuf_scale_simple (unscaled,
-                                 ideal_mini_width,
-                                 ideal_mini_height,
+                                 ideal_mini_size,
+                                 ideal_mini_size,
                                  GDK_INTERP_BILINEAR);
 
       g_object_unref (G_OBJECT (unscaled));
@@ -575,8 +573,7 @@ static GdkPixbuf*
 scaled_from_pixdata (guchar *pixdata,
                      int     w,
                      int     h,
-                     int     new_w,
-                     int     new_h)
+                     int     new_size)
 {
   GdkPixbuf *src;
   GdkPixbuf *dest;
@@ -613,9 +610,12 @@ scaled_from_pixdata (guchar *pixdata,
        }
     }
 
-  if (w != new_w || h != new_h)
+  if (w != new_size || h != new_size)
     {
-      dest = gdk_pixbuf_scale_simple (src, new_w, new_h, GDK_INTERP_BILINEAR);
+      dest = gdk_pixbuf_scale_simple (src,
+                                      new_size,
+                                      new_size,
+                                      GDK_INTERP_BILINEAR);
 
       g_object_unref (G_OBJECT (src));
     }
@@ -634,11 +634,9 @@ meta_read_icons (MetaScreen     *screen,
                  Pixmap          wm_hints_pixmap,
                  Pixmap          wm_hints_mask,
                  GdkPixbuf     **iconp,
-                 int             ideal_width,
-                 int             ideal_height,
+                 int             ideal_size,
                  GdkPixbuf     **mini_iconp,
-                 int             ideal_mini_width,
-                 int             ideal_mini_height)
+                 int             ideal_mini_size)
 {
   guchar *pixdata;
   int w, h;
@@ -674,17 +672,26 @@ meta_read_icons (MetaScreen     *screen,
     {
       icon_cache->net_wm_icon_dirty = FALSE;
 
-      if (read_rgb_icon (screen->display, xwindow,
-                         ideal_width, ideal_height,
-                         ideal_mini_width, ideal_mini_height,
-                         &w, &h, &pixdata,
-                         &mini_w, &mini_h, &mini_pixdata))
+      if (read_rgb_icon (screen->display,
+                         xwindow,
+                         ideal_size,
+                         ideal_mini_size,
+                         &w,
+                         &h,
+                         &pixdata,
+                         &mini_w,
+                         &mini_h,
+                         &mini_pixdata))
         {
-          *iconp = scaled_from_pixdata (pixdata, w, h,
-                                        ideal_width, ideal_height);
+          *iconp = scaled_from_pixdata (pixdata,
+                                        w,
+                                        h,
+                                        ideal_size);
 
-          *mini_iconp = scaled_from_pixdata (mini_pixdata, mini_w, mini_h,
-                                             ideal_mini_width, ideal_mini_height);
+          *mini_iconp = scaled_from_pixdata (mini_pixdata,
+                                             mini_w,
+                                             mini_h,
+                                             ideal_mini_size);
 
           if (*iconp && *mini_iconp)
             {
@@ -720,9 +727,12 @@ meta_read_icons (MetaScreen     *screen,
           pixmap != None)
         {
           if (try_pixmap_and_mask (screen->display,
-                                   pixmap, mask,
-                                   iconp, ideal_width, ideal_height,
-                                   mini_iconp, ideal_mini_width, ideal_mini_height))
+                                   pixmap,
+                                   mask,
+                                   iconp,
+                                   ideal_size,
+                                   mini_iconp,
+                                   ideal_mini_size))
             {
               icon_cache->prev_pixmap = pixmap;
               icon_cache->prev_mask = mask;
@@ -746,9 +756,13 @@ meta_read_icons (MetaScreen     *screen,
            mask != icon_cache->prev_mask) &&
           pixmap != None)
         {
-          if (try_pixmap_and_mask (screen->display, pixmap, mask,
-                                   iconp, ideal_width, ideal_height,
-                                   mini_iconp, ideal_mini_width, ideal_mini_height))
+          if (try_pixmap_and_mask (screen->display,
+                                   pixmap,
+                                   mask,
+                                   iconp,
+                                   ideal_size,
+                                   mini_iconp,
+                                   ideal_mini_size))
             {
               icon_cache->prev_pixmap = pixmap;
               icon_cache->prev_mask = mask;
@@ -766,11 +780,9 @@ meta_read_icons (MetaScreen     *screen,
     {
       get_fallback_icons (screen,
                           iconp,
-                          ideal_width,
-                          ideal_height,
+                          ideal_size,
                           mini_iconp,
-                          ideal_mini_width,
-                          ideal_mini_height);
+                          ideal_mini_size);
 
       replace_cache (icon_cache, USING_FALLBACK_ICON,
                      *iconp, *mini_iconp);
diff --git a/src/core/iconcache.h b/src/core/iconcache.h
index e0bf9944..a243055c 100644
--- a/src/core/iconcache.h
+++ b/src/core/iconcache.h
@@ -64,14 +64,8 @@ gboolean meta_read_icons         (MetaScreen     *screen,
                                   Pixmap          wm_hints_pixmap,
                                   Pixmap          wm_hints_mask,
                                   GdkPixbuf     **iconp,
-                                  int             ideal_width,
-                                  int             ideal_height,
+                                  int             ideal_size,
                                   GdkPixbuf     **mini_iconp,
-                                  int             ideal_mini_width,
-                                  int             ideal_mini_height);
+                                  int             ideal_mini_size);
 
 #endif
-
-
-
-
diff --git a/src/core/window.c b/src/core/window.c
index 3aa5c96f..c0e63226 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -52,6 +52,10 @@
 
 #include <X11/extensions/shape.h>
 
+/* should investigate changing these to whatever most apps use */
+#define META_ICON_SIZE 96
+#define META_MINI_ICON_SIZE 16
+
 static int destroying_windows_disallowed = 0;
 
 static void     update_sm_hints           (MetaWindow     *window);
@@ -6257,10 +6261,9 @@ meta_window_update_icon_now (MetaWindow *window)
                        window->wm_hints_pixmap,
                        window->wm_hints_mask,
                        &icon,
-                       META_ICON_WIDTH, META_ICON_HEIGHT,
+                       META_ICON_SIZE,
                        &mini_icon,
-                       META_MINI_ICON_WIDTH,
-                       META_MINI_ICON_HEIGHT))
+                       META_MINI_ICON_SIZE))
     {
       if (window->icon)
         g_object_unref (G_OBJECT (window->icon));
diff --git a/src/include/common.h b/src/include/common.h
index 3af03351..f0612f0b 100644
--- a/src/include/common.h
+++ b/src/include/common.h
@@ -194,14 +194,6 @@ typedef enum
   META_SIDE_BOTTOM          = META_DIRECTION_BOTTOM
 } MetaSide;
 
-/* should investigate changing these to whatever most apps use */
-#define META_ICON_WIDTH 96
-#define META_ICON_HEIGHT 96
-#define META_MINI_ICON_WIDTH 16
-#define META_MINI_ICON_HEIGHT 16
-
-#define META_DEFAULT_ICON_NAME "window"
-
 /* #define GTK_PRIORITY_RESIZE       (G_PRIORITY_HIGH_IDLE + 10) */
 #define META_PRIORITY_RESIZE         (G_PRIORITY_HIGH_IDLE + 15)
 /* #define GDK_PRIORITY_REDRAW       (G_PRIORITY_HIGH_IDLE + 20) */
diff --git a/src/include/ui.h b/src/include/ui.h
index 7e7e9404..f3b8e263 100644
--- a/src/include/ui.h
+++ b/src/include/ui.h
@@ -145,8 +145,11 @@ GdkPixbuf* meta_gdk_pixbuf_get_from_pixmap (Pixmap       xpixmap,
 void      meta_ui_push_delay_exposes (MetaUI *ui);
 void      meta_ui_pop_delay_exposes  (MetaUI *ui);
 
-GdkPixbuf* meta_ui_get_default_window_icon (MetaUI *ui);
-GdkPixbuf* meta_ui_get_default_mini_icon (MetaUI *ui);
+GdkPixbuf *meta_ui_get_default_window_icon (MetaUI *ui,
+                                            int     ideal_size);
+
+GdkPixbuf *meta_ui_get_default_mini_icon   (MetaUI *ui,
+                                            int     ideal_size);
 
 gboolean  meta_ui_window_should_not_cause_focus (Display *xdisplay,
                                                  Window   xwindow);
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 64bb5037..44d594bd 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -34,6 +34,8 @@
 #include <cairo-xlib.h>
 #include <libmetacity/meta-theme.h>
 
+#define META_DEFAULT_ICON_NAME "window"
+
 struct _MetaUI
 {
   Display *xdisplay;
@@ -707,13 +709,14 @@ load_default_window_icon (int size)
 }
 
 GdkPixbuf*
-meta_ui_get_default_window_icon (MetaUI *ui)
+meta_ui_get_default_window_icon (MetaUI *ui,
+                                 int     ideal_size)
 {
   static GdkPixbuf *default_icon = NULL;
 
   if (default_icon == NULL)
     {
-      default_icon = load_default_window_icon (META_ICON_WIDTH);
+      default_icon = load_default_window_icon (ideal_size);
       g_assert (default_icon);
     }
 
@@ -723,13 +726,14 @@ meta_ui_get_default_window_icon (MetaUI *ui)
 }
 
 GdkPixbuf*
-meta_ui_get_default_mini_icon (MetaUI *ui)
+meta_ui_get_default_mini_icon (MetaUI *ui,
+                               int     ideal_size)
 {
   static GdkPixbuf *default_icon = NULL;
 
   if (default_icon == NULL)
     {
-      default_icon = load_default_window_icon (META_MINI_ICON_WIDTH);
+      default_icon = load_default_window_icon (ideal_size);
       g_assert (default_icon);
     }
 


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