summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-11-21 04:56:50 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-11-21 04:56:50 +0000
commit11a88edb28cdc0aa183fb8aad2deb3c4bbd132ca (patch)
tree1ca27bd308210840e51c2169d6f357ed2ca64f13 /gtk
parentae85b9619a3d92aa5bba21075b74829d48f45a94 (diff)
downloadgtk+-11a88edb28cdc0aa183fb8aad2deb3c4bbd132ca.tar.gz
Avoid drawing one too many frames. (#107398, Owen Taylor, Miguel Gomez)
2007-11-20 Matthias Clasen <mclasen@redhat.com> * gtk/gtkimage.c (animation_timeout): Avoid drawing one too many frames. (#107398, Owen Taylor, Miguel Gomez) svn path=/trunk/; revision=19017
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkimage.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index a4012b90e5..43c442613d 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -1342,6 +1342,7 @@ static gint
animation_timeout (gpointer data)
{
GtkImage *image;
+ int delay;
image = GTK_IMAGE (data);
@@ -1349,16 +1350,17 @@ animation_timeout (gpointer data)
gdk_pixbuf_animation_iter_advance (image->data.anim.iter, NULL);
- if (gdk_pixbuf_animation_iter_get_delay_time (image->data.anim.iter) >= 0)
- image->data.anim.frame_timeout =
- gdk_threads_add_timeout (gdk_pixbuf_animation_iter_get_delay_time (image->data.anim.iter),
- animation_timeout,
- image);
+ delay = gdk_pixbuf_animation_iter_get_delay_time (image->data.anim.iter);
+ if (delay >= 0)
+ {
+ image->data.anim.frame_timeout =
+ gdk_threads_add_timeout (delay, animation_timeout, image);
- gtk_widget_queue_draw (GTK_WIDGET (image));
+ gtk_widget_queue_draw (GTK_WIDGET (image));
- if (GTK_WIDGET_DRAWABLE (image))
- gdk_window_process_updates (GTK_WIDGET (image)->window, TRUE);
+ if (GTK_WIDGET_DRAWABLE (image))
+ gdk_window_process_updates (GTK_WIDGET (image)->window, TRUE);
+ }
return FALSE;
}