[gtk+] iconhelper: Return surface from icon-effect function



commit cefba86fb366adc3584ad59607e1a8864d1bd9f8
Author: Benjamin Otte <otte redhat com>
Date:   Fri Dec 4 16:18:23 2015 +0100

    iconhelper: Return surface from icon-effect function
    
    All the callers where converting to a surface anyway.

 gtk/gtkiconhelper.c |   37 +++++++++++++++++--------------------
 1 files changed, 17 insertions(+), 20 deletions(-)
---
diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c
index 2dd4cd2..acae39c 100644
--- a/gtk/gtkiconhelper.c
+++ b/gtk/gtkiconhelper.c
@@ -154,13 +154,16 @@ ensure_icon_size (GtkIconHelper *self,
   *height_out = height;
 }
 
-static GdkPixbuf *
-ensure_stated_pixbuf_from_pixbuf (GtkIconHelper   *self,
-                                 GtkStyleContext *context,
-                                 GdkPixbuf       *pixbuf)
+static cairo_surface_t *
+ensure_stated_surface_from_pixbuf (GtkIconHelper   *self,
+                                   GtkStyleContext *context,
+                                   GdkPixbuf       *pixbuf,
+                                   gint             scale,
+                                   GdkWindow       *window)
 {
   GdkPixbuf *rendered;
   GtkIconSource *source;
+  cairo_surface_t *surface;
 
   G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
 
@@ -181,7 +184,11 @@ ensure_stated_pixbuf_from_pixbuf (GtkIconHelper   *self,
 
   G_GNUC_END_IGNORE_DEPRECATIONS;
 
-  return rendered;
+  surface = gdk_cairo_surface_create_from_pixbuf (rendered, scale, window);
+
+  g_object_unref (rendered);
+
+  return surface;
 }
 
 static GtkIconLookupFlags
@@ -356,7 +363,7 @@ ensure_surface_from_pixbuf (GtkIconHelper   *self,
 {
   gint width, height;
   cairo_surface_t *surface;
-  GdkPixbuf *pixbuf, *stated;
+  GdkPixbuf *pixbuf;
 
   if (get_pixbuf_size (self,
                        context,
@@ -370,11 +377,7 @@ ensure_surface_from_pixbuf (GtkIconHelper   *self,
   else
     pixbuf = g_object_ref (orig_pixbuf);
 
-  stated = ensure_stated_pixbuf_from_pixbuf (self, context, pixbuf);
-  g_object_unref (pixbuf);
-  pixbuf = stated;
-
-  surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, scale, self->priv->window);
+  surface = ensure_stated_surface_from_pixbuf (self, context, pixbuf, scale, self->priv->window);
   g_object_unref (pixbuf);
 
   return surface;
@@ -446,15 +449,9 @@ ensure_surface_for_gicon (GtkIconHelper   *self,
     }
 
   if (!symbolic)
-    {
-      GdkPixbuf *rendered;
-
-      rendered = ensure_stated_pixbuf_from_pixbuf (self, context, destination);
-      g_object_unref (destination);
-      destination = rendered;
-    }
-
-  surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, self->priv->window);
+    surface = ensure_stated_surface_from_pixbuf (self, context, destination, scale, self->priv->window);
+  else
+    surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, self->priv->window);
   g_object_unref (destination);
 
   return surface;


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