Add a shortcut to stop the gif mainloop after the first frame, if that is

2006-03-14  Matthias Clasen  <mclasen@redhat.com>

	* io-gif.c (gdk_pixbuf__gif_image_load): Add a shortcut
	to stop the gif mainloop after the first frame, if that
	is all we are interested in.  (#334538)
This commit is contained in:
Matthias Clasen
2006-03-14 21:35:25 +00:00
committed by Matthias Clasen
parent 0ecf3dca19
commit 9d5b02fb73
2 changed files with 14 additions and 2 deletions

View File

@@ -1,3 +1,9 @@
2006-03-14 Matthias Clasen <mclasen@redhat.com>
* io-gif.c (gdk_pixbuf__gif_image_load): Add a shortcut
to stop the gif mainloop after the first frame, if that
is all we are interested in. (#334538)
2006-03-13 Matthias Clasen <mclasen@redhat.com>
* ==== Released 2.8.15 ===

View File

@@ -117,6 +117,7 @@ struct _GifContext
unsigned int global_bit_pixel;
unsigned int global_color_resolution;
unsigned int background_index;
gboolean stop_after_first_frame;
gboolean frame_cmap_active;
CMap frame_color_map;
@@ -1088,6 +1089,9 @@ gif_get_lzw (GifContext *context)
*/
context->frame = NULL;
context->frame_cmap_active = FALSE;
if (context->stop_after_first_frame)
context->state = GIF_DONE;
}
return v;
@@ -1415,7 +1419,7 @@ new_context (void)
memset (context, 0, sizeof (GifContext));
context->animation = g_object_new (GDK_TYPE_PIXBUF_GIF_ANIM, NULL);
context->animation = g_object_new (GDK_TYPE_PIXBUF_GIF_ANIM, NULL);
context->frame = NULL;
context->file = NULL;
context->state = GIF_START;
@@ -1430,6 +1434,7 @@ new_context (void)
context->gif89.disposal = -1;
context->animation->loop = 1;
context->in_loop_extension = FALSE;
context->stop_after_first_frame = FALSE;
return context;
}
@@ -1454,7 +1459,8 @@ gdk_pixbuf__gif_image_load (FILE *file, GError **error)
context->file = file;
context->error = error;
context->stop_after_first_frame = TRUE;
if (gif_main_loop (context) == -1 || context->animation->frames == NULL) {
if (context->error && *(context->error) == NULL)
g_set_error (context->error,