Commit 95f163d7 authored by Matthias Clasen's avatar Matthias Clasen Committed by Matthias Clasen

If neither load nor begin_load are available fall back to load_animation

Sun Nov  9 23:07:05 2003  Matthias Clasen  <maclas@gmx.de>

	* gdk-pixbuf-io.c (_gdk_pixbuf_generic_image_load): If neither
	load nor begin_load are available fall back to load_animation
	and use gdk_pixbuf_animation_get_static_image() to obtain a
	pixbuf. Inefficient, but at least doesn't crash.
parent 0af9579e
Sun Nov 9 23:07:05 2003 Matthias Clasen <maclas@gmx.de>
* gdk-pixbuf-io.c (_gdk_pixbuf_generic_image_load): If neither
load nor begin_load are available fall back to load_animation
and use gdk_pixbuf_animation_get_static_image() to obtain a
pixbuf. Inefficient, but at least doesn't crash.
Sun Nov 9 21:56:20 2003 Matthias Clasen <maclas@gmx.de>
* queryloaders.c (write_loader_info): New function to write
......
......@@ -647,34 +647,53 @@ _gdk_pixbuf_generic_image_load (GdkPixbufModule *module,
guchar buffer[4096];
size_t length;
GdkPixbuf *pixbuf = NULL;
GdkPixbufAnimation *animation = NULL;
gpointer context;
if (module->load != NULL)
return (* module->load) (f, error);
context = module->begin_load (NULL, prepared_notify, NULL, &pixbuf, error);
if (!context)
return NULL;
if (module->begin_load != NULL) {
context = module->begin_load (NULL, prepared_notify, NULL, &pixbuf, error);
while (!feof (f)) {
length = fread (buffer, 1, sizeof (buffer), f);
if (length > 0)
if (!module->load_increment (context, buffer, length, error)) {
module->stop_load (context, NULL);
if (pixbuf != NULL)
g_object_unref (pixbuf);
return NULL;
}
if (!context)
return NULL;
while (!feof (f)) {
length = fread (buffer, 1, sizeof (buffer), f);
if (length > 0)
if (!module->load_increment (context, buffer, length, error)) {
module->stop_load (context, NULL);
if (pixbuf != NULL)
g_object_unref (pixbuf);
return NULL;
}
}
if (!module->stop_load (context, error)) {
if (pixbuf != NULL)
g_object_unref (pixbuf);
return NULL;
}
return pixbuf;
}
if (module->load_animation != NULL) {
animation = (* module->load_animation) (f, error);
if (animation != NULL) {
pixbuf = gdk_pixbuf_animation_get_static_image (animation);
if (!module->stop_load (context, error)) {
if (pixbuf != NULL)
g_object_unref (pixbuf);
return NULL;
g_object_ref (pixbuf);
g_object_unref (animation);
return pixbuf;
}
}
return pixbuf;
return NULL;
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment