diff -r d9ff435d843d -r df9c0c0d8dda pidgin/gtkutils.c --- a/pidgin/gtkutils.c Tue Aug 28 03:36:12 2012 -0400 +++ b/pidgin/gtkutils.c Tue Aug 28 03:42:27 2012 -0400 @@ -2162,7 +2162,7 @@ static void icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog) { - GdkPixbuf *pixbuf, *scale; + GdkPixbuf *pixbuf; int height, width; char *basename, *markup, *size; struct stat st; @@ -2171,7 +2171,7 @@ filename = gtk_file_chooser_get_preview_filename( GTK_FILE_CHOOSER(dialog->icon_filesel)); - if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file(filename))) + if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file_at_size(filename, 128, 128))) { gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL); gtk_label_set_markup(GTK_LABEL(dialog->icon_text), ""); @@ -2179,8 +2179,7 @@ return; } - width = gdk_pixbuf_get_width(pixbuf); - height = gdk_pixbuf_get_height(pixbuf); + gdk_pixbuf_get_file_info(filename, &width, &height); basename = g_path_get_basename(filename); size = purple_str_size_to_units(st.st_size); markup = g_strdup_printf(_("File: %s\n" @@ -2188,13 +2187,10 @@ "Image size: %dx%d"), basename, size, width, height); - scale = gdk_pixbuf_scale_simple(pixbuf, width * 50 / height, - 50, GDK_INTERP_BILINEAR); - gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), scale); + gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), pixbuf); gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup); g_object_unref(G_OBJECT(pixbuf)); - g_object_unref(G_OBJECT(scale)); g_free(filename); g_free(basename); g_free(size);