[metacity/simplify-iconcache: 3/5] iconcache: simplify ideal size handling
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity/simplify-iconcache: 3/5] iconcache: simplify ideal size handling
- Date: Thu, 19 Mar 2020 16:49:37 +0000 (UTC)
commit f3bb7354f805c936286f420747c6df49efd43fdc
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 ff2c34a1..c99b7ea8 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);
@@ -6256,10 +6260,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]