Подробности
        
                          [В начало]
Проблема в реализации № S0662
Краткое описание
gdk_pixbuf_loader_set_size портит загружаемое анимированное изображение
Подробное описание
Если изменить размер у загружаемого анимированного изображения через gdk_pixbuf_loader_set_size, то в конце загрузки, после вызова gdk_pixbuf_loader_close, анимированное изображение будет с нужными размерами, но статическое (содержащее только один кадр).
Это и демонстрирует прикрепленный код (вызов -"test 'image_file'").
Исходя из кода, проблема в функции gdk_pixbuf_loader_close, которая и делает подмену анимированного изображения:
gboolean
gdk_pixbuf_loader_close (GdkPixbufLoader *loader,
                         GError         **error)
{
    //...
    if (priv->needs_scale) 
    {
        //...                       
        tmp = gdk_pixbuf_animation_get_static_image (priv->animation);
        g_object_ref (tmp);
        pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, tmp->has_alpha, 8, 
                                     priv->width, priv->height);
        g_object_unref (priv->animation);
        priv->animation = gdk_pixbuf_non_anim_new (pixbuf);
        g_object_unref (pixbuf);
        //...
    }
    //...
}
GdkPixbufAnimation *
gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader)
{
    //...
    return priv->animation;
}
GdkPixbuf *
gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader)
{
    //...
    if (priv->animation)
        return gdk_pixbuf_animation_get_static_image (priv->animation);
    else
        return NULL;
}
                    Раздел стандарта
Gdk-pixbuf 2.6.2 API Reference, GdkPixbufLoader
Способы устранения
Указать в документации, что gdk_pixbuf_loader_set_size неприменима к анимированным изображениям. Или построить оболочку вокруг возвращаемого загрузчиком обьекта GdkPixbufAnimation, которая будет масштабировать кадры.
Компонент
gtk-gdk-pixbuf 2.6.2 or later
Статус
Исправлено в gtk+-2.11.0
[В начало]