[gtk+] Avoid pixbufs when loading themed icons
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Avoid pixbufs when loading themed icons
- Date: Thu, 30 Nov 2017 00:44:55 +0000 (UTC)
commit 8cdaaffd428127f8a922a90ecbb1e60b1f92507c
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Nov 29 19:44:30 2017 -0500
Avoid pixbufs when loading themed icons
We can directly get a texture from GtkIconTheme now.
gtk/gtkcssimageicontheme.c | 38 ++++++++++++--------------------------
1 files changed, 12 insertions(+), 26 deletions(-)
---
diff --git a/gtk/gtkcssimageicontheme.c b/gtk/gtkcssimageicontheme.c
index 1183bd8..32bfca0 100644
--- a/gtk/gtkcssimageicontheme.c
+++ b/gtk/gtkcssimageicontheme.c
@@ -64,44 +64,30 @@ gtk_css_image_icon_theme_snapshot (GtkCssImage *image,
else
{
GtkIconInfo *icon_info;
- GdkPixbuf *pixbuf;
icon_info = gtk_icon_theme_lookup_icon_for_scale (icon_theme->icon_theme,
icon_theme->name,
size,
icon_theme->scale,
GTK_ICON_LOOKUP_USE_BUILTIN);
- if (icon_info)
- {
- symbolic = gtk_icon_info_is_symbolic (icon_info);
- pixbuf = gtk_icon_info_load_icon (icon_info, NULL);
- }
- else
- {
- pixbuf = NULL;
- }
-
- if (pixbuf == NULL)
- {
- pixbuf = gtk_icon_theme_load_icon (icon_theme->icon_theme,
- "image-missing",
- size,
- GTK_ICON_LOOKUP_USE_BUILTIN | GTK_ICON_LOOKUP_GENERIC_FALLBACK,
- NULL);
- g_assert (pixbuf != NULL);
- symbolic = FALSE;
- }
-
- texture = gdk_texture_new_for_pixbuf (pixbuf);
+ if (icon_info == NULL)
+ icon_info = gtk_icon_theme_lookup_icon (icon_theme->icon_theme,
+ "image-missing",
+ size,
+ GTK_ICON_LOOKUP_USE_BUILTIN |
GTK_ICON_LOOKUP_GENERIC_FALLBACK);
+
+ g_assert (icon_info != NULL);
+
+ symbolic = gtk_icon_info_is_symbolic (icon_info);
+ texture = gtk_icon_info_load_texture (icon_info);
g_clear_object (&icon_theme->cached_texture);
+
icon_theme->cached_size = size;
icon_theme->cached_texture = texture;
icon_theme->cached_symbolic = symbolic;
- g_object_unref (pixbuf);
- if (icon_info)
- g_object_unref (icon_info);
+ g_object_unref (icon_info);
}
texture_width = (double) gdk_texture_get_width (texture) / icon_theme->scale;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]