PixbufAnimation.getIter
gdkpixbuf.pixbuf_animation_iter.PixbufAnimationIter getIter(glib.time_val.TimeVal startTime)Get an iterator for displaying an animation.
The iterator provides the frames that should be displayed at a given time.
start_time would normally come from [glib.global.getCurrentTime], and marks the beginning of animation playback. After creating an iterator, you should immediately display the pixbuf returned by [gdkpixbuf.pixbuf_animation_iter.PixbufAnimationIter.getPixbuf]. Then, you should install a timeout (with [glib.global.timeoutAdd]) or by some other mechanism ensure that you'll update the image after [gdkpixbuf.pixbuf_animation_iter.PixbufAnimationIter.getDelayTime] milliseconds. Each time the image is updated, you should reinstall the timeout with the new, possibly-changed delay time.
As a shortcut, if start_time is NULL, the result of [glib.global.getCurrentTime] will be used automatically.
To update the image (i.e. possibly change the result of [gdkpixbuf.pixbuf_animation_iter.PixbufAnimationIter.getPixbuf] to a new frame of the animation), call [gdkpixbuf.pixbuf_animation_iter.PixbufAnimationIter.advance].
If you're using #GdkPixbufLoader, in addition to updating the image after the delay time, you should also update it whenever you receive the area_updated signal and [gdkpixbuf.pixbuf_animation_iter.PixbufAnimationIter.onCurrentlyLoadingFrame] returns TRUE. In this case, the frame currently being fed into the loader has received new data, so needs to be refreshed. The delay time for a frame may also be modified after an area_updated signal, for example if the delay time for a frame is encoded in the data after the frame itself. So your timeout should be reinstalled after any area_updated signal.
A delay time of -1 is possible, indicating "infinite".
Parameters
startTime | time when the animation starts playing |