diff options
author | Matthias Clasen <mclasen@redhat.com> | 2007-11-21 04:56:50 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2007-11-21 04:56:50 +0000 |
commit | 11a88edb28cdc0aa183fb8aad2deb3c4bbd132ca (patch) | |
tree | 1ca27bd308210840e51c2169d6f357ed2ca64f13 /gtk | |
parent | ae85b9619a3d92aa5bba21075b74829d48f45a94 (diff) | |
download | gtk+-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.c | 18 |
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; } |