# HG changeset patch # User nadvornik # Date 1208990314 0 # Node ID 01fe7ca55c69ce9a444f42b4f09abc2a7add2f30 # Parent cc46a09d0805d5ed965571d78264a50cfbea154c clear the buffer before loading of an image diff -r cc46a09d0805 -r 01fe7ca55c69 src/image-load.c --- a/src/image-load.c Wed Apr 23 22:33:18 2008 +0000 +++ b/src/image-load.c Wed Apr 23 22:38:34 2008 +0000 @@ -43,7 +43,7 @@ if (il->pixbuf) gdk_pixbuf_ref(il->pixbuf); } -static void image_loader_area_cb(GdkPixbufLoader *loader, +static void image_loader_area_updated_cb(GdkPixbufLoader *loader, guint x, guint y, guint w, guint h, gpointer data) { @@ -63,6 +63,22 @@ } } +static void image_loader_area_prepared_cb(GdkPixbufLoader *loader, gpointer data) +{ + GdkPixbuf *pb; + guchar *pix; + size_t h, rs; + + pb = gdk_pixbuf_loader_get_pixbuf(loader); + + h = gdk_pixbuf_get_height(pb); + rs = gdk_pixbuf_get_rowstride(pb); + pix = gdk_pixbuf_get_pixels(pb); + + memset(pix, 0, rs * h); /*this should be faster than pixbuf_fill */ + +} + static void image_loader_size_cb(GdkPixbufLoader *loader, gint width, gint height, gpointer data) { @@ -295,9 +311,11 @@ il->loader = gdk_pixbuf_loader_new(); g_signal_connect(G_OBJECT(il->loader), "area_updated", - G_CALLBACK(image_loader_area_cb), il); + G_CALLBACK(image_loader_area_updated_cb), il); g_signal_connect(G_OBJECT(il->loader), "size_prepared", G_CALLBACK(image_loader_size_cb), il); + g_signal_connect(G_OBJECT(il->loader), "area_prepared", + G_CALLBACK(image_loader_area_prepared_cb), il); il->shrunk = FALSE;