[gtk+] Cleanup gdk_pixbuf_render_pixmap_and_mask_for_colormap()



commit 7fd148fc5976fe5921764a787cfa859e94e8014c
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Aug 4 10:33:01 2010 -0400

    Cleanup gdk_pixbuf_render_pixmap_and_mask_for_colormap()

 gdk/gdkpixbuf-render.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)
---
diff --git a/gdk/gdkpixbuf-render.c b/gdk/gdkpixbuf-render.c
index 0365691..216cac7 100644
--- a/gdk/gdkpixbuf-render.c
+++ b/gdk/gdkpixbuf-render.c
@@ -180,14 +180,18 @@ gdk_pixbuf_render_pixmap_and_mask (GdkPixbuf  *pixbuf,
 						  alpha_threshold);
 }
 
-static void
-remove_alpha_channel (GdkPixbuf *pixbuf)
+static GdkPixbuf *
+remove_alpha_channel (GdkPixbuf *orig)
 {
+  GdkPixbuf *pixbuf;
+
   unsigned int x, y, width, height, stride;
   unsigned char *data;
 
-  if (!gdk_pixbuf_get_has_alpha (pixbuf))
-    return;
+  if (!gdk_pixbuf_get_has_alpha (orig))
+    return g_object_ref (orig);
+
+  pixbuf = gdk_pixbuf_copy (orig);
 
   width = gdk_pixbuf_get_width (pixbuf);
   height = gdk_pixbuf_get_height (pixbuf);
@@ -203,6 +207,8 @@ remove_alpha_channel (GdkPixbuf *pixbuf)
 
       data += stride;
     }
+
+  return pixbuf;
 }
 
 /**
@@ -259,17 +265,7 @@ gdk_pixbuf_render_pixmap_and_mask_for_colormap (GdkPixbuf   *pixbuf,
        * transparent. So we treat the pixbuf like a pixbuf without alpha channel;
        * see bug #487865.
        */
-      if (gdk_pixbuf_get_has_alpha (pixbuf))
-        {
-          int width, height;
-
-          width = gdk_pixbuf_get_width (pixbuf);
-          height = gdk_pixbuf_get_height (pixbuf);
-          tmp_pixbuf = gdk_pixbuf_copy (pixbuf);
-          remove_alpha_channel (tmp_pixbuf);
-        }
-      else
-        tmp_pixbuf = g_object_ref (pixbuf);
+      tmp_pixbuf = remove_alpha_channel (pixbuf);
 
       cr = gdk_cairo_create (*pixmap_return);
       gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);



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