[gtk+] image: Make gtk_image_new_from_resource() load animations



commit d1c642d1f54e5b3045ffdd7e5fb2b24bf3cb18ec
Author: Benjamin Otte <otte redhat com>
Date:   Wed Jan 30 16:24:39 2013 +0100

    image: Make gtk_image_new_from_resource() load animations
    
    Requires new gdk-pixbuf APIs to load animations from resources.

 configure.ac   |    2 +-
 gtk/gtkimage.c |   19 ++++++++-----------
 2 files changed, 9 insertions(+), 12 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 6ccae17..6b9e4ac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,7 +46,7 @@ m4_define([glib_required_version], [2.35.3])
 m4_define([pango_required_version], [1.32.4])
 m4_define([atk_required_version], [2.5.3])
 m4_define([cairo_required_version], [1.10.0])
-m4_define([gdk_pixbuf_required_version], [2.26.0])
+m4_define([gdk_pixbuf_required_version], [2.27.1])
 m4_define([introspection_required_version], [1.32.0])
 GLIB_REQUIRED_VERSION=glib_required_version
 PANGO_REQUIRED_VERSION=pango_required_version
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index 5b0ae66..d373b51 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -815,8 +815,7 @@ gtk_image_set_from_resource (GtkImage    *image,
 			     const gchar *resource_path)
 {
   GtkImagePrivate *priv;
-  GdkPixbuf *pixbuf = NULL;
-  GInputStream *stream;
+  GdkPixbufAnimation *animation;
 
   g_return_if_fail (GTK_IS_IMAGE (image));
 
@@ -832,14 +831,9 @@ gtk_image_set_from_resource (GtkImage    *image,
       return;
     }
 
-  stream = g_resources_open_stream (resource_path, 0, NULL);
-  if (stream != NULL)
-    {
-      pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, NULL);
-      g_object_unref (stream);
-    }
+  animation = gdk_pixbuf_animation_new_from_resource (resource_path, NULL);
 
-  if (pixbuf == NULL)
+  if (animation == NULL)
     {
       gtk_image_set_from_stock (image,
                                 GTK_STOCK_MISSING_IMAGE,
@@ -850,11 +844,14 @@ gtk_image_set_from_resource (GtkImage    *image,
 
   priv->resource_path = g_strdup (resource_path);
 
-  gtk_image_set_from_pixbuf (image, pixbuf);
+  if (gdk_pixbuf_animation_is_static_image (animation))
+    gtk_image_set_from_pixbuf (image, gdk_pixbuf_animation_get_static_image (animation));
+  else
+    gtk_image_set_from_animation (image, animation);
 
   g_object_notify (G_OBJECT (image), "resource");
 
-  g_object_unref (pixbuf);
+  g_object_unref (animation);
 
   g_object_thaw_notify (G_OBJECT (image));
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]