mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-05 16:20:10 +00:00
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.
This commit is contained in:
parent
0af9579ea2
commit
95f163d7d2
@ -1,3 +1,10 @@
|
||||
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 (module->begin_load != NULL) {
|
||||
|
||||
context = module->begin_load (NULL, prepared_notify, NULL, &pixbuf, error);
|
||||
|
||||
if (!context)
|
||||
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;
|
||||
}
|
||||
|
||||
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->load_animation != NULL) {
|
||||
animation = (* module->load_animation) (f, error);
|
||||
if (animation != NULL) {
|
||||
pixbuf = gdk_pixbuf_animation_get_static_image (animation);
|
||||
|
||||
g_object_ref (pixbuf);
|
||||
|
||||
g_object_unref (animation);
|
||||
|
||||
return pixbuf;
|
||||
}
|
||||
}
|
||||
|
||||
if (!module->stop_load (context, error)) {
|
||||
if (pixbuf != NULL)
|
||||
g_object_unref (pixbuf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pixbuf;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user