# HG changeset patch # User Elliott Sales de Andrade # Date 1266987927 0 # Node ID dbbb7df5af7c61a93fb4640bc6e091402a5075c1 # Parent 755219afed9f7daeeaf652ceac9c025f98bf7e86# Parent bd28b8515eb23007482221f21e9086ec8d21bcd0 merge of 'bad096432d2d601b84837925471454773c42d1f7' and 'c6702617a937bd0b77620c209828d57563cc3f87' diff -r 755219afed9f -r dbbb7df5af7c pidgin/gtkblist.c --- a/pidgin/gtkblist.c Wed Feb 24 05:00:09 2010 +0000 +++ b/pidgin/gtkblist.c Wed Feb 24 05:05:27 2010 +0000 @@ -2660,39 +2660,30 @@ /* Altered from do_colorshift in gnome-panel */ static void -do_alphashift (GdkPixbuf *dest, GdkPixbuf *src, int shift) +do_alphashift(GdkPixbuf *pixbuf, int shift) { gint i, j; - gint width, height, has_alpha, srcrowstride, destrowstride; - guchar *target_pixels; - guchar *original_pixels; - guchar *pixsrc; - guchar *pixdest; + gint width, height, padding; + guchar *pixels; int val; - guchar a; - - has_alpha = gdk_pixbuf_get_has_alpha (src); - if (!has_alpha) + + if (!gdk_pixbuf_get_has_alpha(pixbuf)) return; - width = gdk_pixbuf_get_width (src); - height = gdk_pixbuf_get_height (src); - srcrowstride = gdk_pixbuf_get_rowstride (src); - destrowstride = gdk_pixbuf_get_rowstride (dest); - target_pixels = gdk_pixbuf_get_pixels (dest); - original_pixels = gdk_pixbuf_get_pixels (src); + width = gdk_pixbuf_get_width(pixbuf); + height = gdk_pixbuf_get_height(pixbuf); + padding = gdk_pixbuf_get_rowstride(pixbuf) - width * 4; + pixels = gdk_pixbuf_get_pixels(pixbuf); for (i = 0; i < height; i++) { - pixdest = target_pixels + i*destrowstride; - pixsrc = original_pixels + i*srcrowstride; for (j = 0; j < width; j++) { - *(pixdest++) = *(pixsrc++); - *(pixdest++) = *(pixsrc++); - *(pixdest++) = *(pixsrc++); - a = *(pixsrc++); - val = a - shift; - *(pixdest++) = CLAMP(val, 0, 255); - } + pixels++; + pixels++; + pixels++; + val = *pixels - shift; + *(pixels++) = CLAMP(val, 0, 255); + } + pixels += padding; } } @@ -6367,7 +6358,7 @@ g_object_ref(G_OBJECT(gtkblist->empty_avatar)); avatar = gtkblist->empty_avatar; } else if ((!PURPLE_BUDDY_IS_ONLINE(buddy) || purple_presence_is_idle(presence))) { - do_alphashift(avatar, avatar, 77); + do_alphashift(avatar, 77); } emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy); diff -r 755219afed9f -r dbbb7df5af7c pidgin/pidginstock.c --- a/pidgin/pidginstock.c Wed Feb 24 05:00:09 2010 +0000 +++ b/pidgin/pidginstock.c Wed Feb 24 05:05:27 2010 +0000 @@ -270,37 +270,30 @@ /* Altered from do_colorshift in gnome-panel */ static void -do_alphashift(GdkPixbuf *dest, GdkPixbuf *src) +do_alphashift(GdkPixbuf *pixbuf) { gint i, j; - gint width, height, has_alpha, srcrowstride, destrowstride; - guchar *target_pixels; - guchar *original_pixels; - guchar *pixsrc; - guchar *pixdest; + gint width, height, padding; + guchar *pixels; guchar a; - has_alpha = gdk_pixbuf_get_has_alpha (src); - if (!has_alpha) + if (!gdk_pixbuf_get_has_alpha(pixbuf)) return; - width = gdk_pixbuf_get_width (src); - height = gdk_pixbuf_get_height (src); - srcrowstride = gdk_pixbuf_get_rowstride (src); - destrowstride = gdk_pixbuf_get_rowstride (dest); - target_pixels = gdk_pixbuf_get_pixels (dest); - original_pixels = gdk_pixbuf_get_pixels (src); + width = gdk_pixbuf_get_width(pixbuf); + height = gdk_pixbuf_get_height(pixbuf); + padding = gdk_pixbuf_get_rowstride(pixbuf) - width * 4; + pixels = gdk_pixbuf_get_pixels(pixbuf); for (i = 0; i < height; i++) { - pixdest = target_pixels + i*destrowstride; - pixsrc = original_pixels + i*srcrowstride; for (j = 0; j < width; j++) { - *(pixdest++) = *(pixsrc++); - *(pixdest++) = *(pixsrc++); - *(pixdest++) = *(pixsrc++); - a = *(pixsrc++); - *(pixdest++) = a / 2; + pixels++; + pixels++; + pixels++; + a = *(pixels); + *(pixels++) = a / 2; } + pixels += padding; } } @@ -348,7 +341,7 @@ g_return_if_fail(filename != NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); if (translucent) - do_alphashift(pixbuf, pixbuf); + do_alphashift(pixbuf); source = gtk_icon_source_new(); gtk_icon_source_set_pixbuf(source, pixbuf); @@ -378,7 +371,7 @@ g_return_if_fail(filename != NULL); pixbuf = gdk_pixbuf_new_from_file(filename, NULL); if (translucent) - do_alphashift(pixbuf, pixbuf); + do_alphashift(pixbuf); source = gtk_icon_source_new(); gtk_icon_source_set_pixbuf(source, pixbuf);