[Xfce4-commits] <tumbler:master> Replaced GdkPixbuf APIs with TumblerImageData

Jannis Pohlmann noreply at xfce.org
Wed Oct 21 00:34:01 CEST 2009


Updating branch refs/heads/master
         to be9202b523a1854fa4824cd348ebae4462d7cfa5 (commit)
       from 5c7ce962e7dd4b2de1ce4df8acf68518fe9cc68e (commit)

commit be9202b523a1854fa4824cd348ebae4462d7cfa5
Author: Jannis Pohlmann <jannis at xfce.org>
Date:   Wed Oct 21 00:31:26 2009 +0200

    Replaced GdkPixbuf APIs with TumblerImageData
    
    Conflicts:
    
    	plugins/font-thumbnailer/font-thumbnailer.c
    	plugins/pixbuf-thumbnailer/pixbuf-thumbnailer.c

 plugins/font-thumbnailer/font-thumbnailer.c     |   16 ++++++++++++--
 plugins/pixbuf-thumbnailer/pixbuf-thumbnailer.c |   16 ++++++++++++--
 plugins/xdg-cache/xdg-cache-thumbnail.c         |   25 ++++++++++++++++------
 tumbler/tumbler-thumbnail.c                     |    3 +-
 tumbler/tumbler-thumbnail.h                     |   16 +++++++++++---
 5 files changed, 57 insertions(+), 19 deletions(-)

diff --git a/plugins/font-thumbnailer/font-thumbnailer.c b/plugins/font-thumbnailer/font-thumbnailer.c
index 1138833..95479c3 100644
--- a/plugins/font-thumbnailer/font-thumbnailer.c
+++ b/plugins/font-thumbnailer/font-thumbnailer.c
@@ -609,9 +609,19 @@ font_thumbnailer_create (TumblerAbstractThumbnailer *thumbnailer,
             pixbuf = g_hash_table_lookup (pixbufs, GINT_TO_POINTER (flavor));
 
             /* if an image for this flavor was generated, save it now */
-            if (pixbuf != NULL)
-              tumbler_thumbnail_save_pixbuf (lp->data, pixbuf, mtime, 
-                                             cancellable, &error);
+            if (pixbuf != NULL) {
+              TumblerImageData data;
+
+              data.data            = gdk_pixbuf_get_pixels (pixbuf);
+              data.has_alpha       = gdk_pixbuf_get_has_alpha (pixbuf);
+              data.bits_per_sample = gdk_pixbuf_get_bits_per_sample (pixbuf);
+              data.width           = gdk_pixbuf_get_width (pixbuf);
+              data.height          = gdk_pixbuf_get_height (pixbuf);
+              data.rowstride       = gdk_pixbuf_get_rowstride (pixbuf);
+              data.colorspace      = (gint) gdk_pixbuf_get_colorspace (pixbuf);
+
+              tumbler_thumbnail_save_pixbuf (lp->data, &data, mtime, NULL, &error);
+            }
           }
     }
 
diff --git a/plugins/pixbuf-thumbnailer/pixbuf-thumbnailer.c b/plugins/pixbuf-thumbnailer/pixbuf-thumbnailer.c
index ee7fade..e181a6e 100644
--- a/plugins/pixbuf-thumbnailer/pixbuf-thumbnailer.c
+++ b/plugins/pixbuf-thumbnailer/pixbuf-thumbnailer.c
@@ -226,9 +226,19 @@ pixbuf_thumbnailer_create (TumblerAbstractThumbnailer *thumbnailer,
             flavor = tumbler_thumbnail_get_flavor (lp->data);
             pixbuf = g_hash_table_lookup (pixbufs, GINT_TO_POINTER (flavor));
 
-            if (pixbuf != NULL)
-              tumbler_thumbnail_save_pixbuf (lp->data, pixbuf, mtime, 
-                                             cancellable, &error);
+            if (pixbuf != NULL) {
+              TumblerImageData data;
+
+              data.data            = gdk_pixbuf_get_pixels (pixbuf);
+              data.has_alpha       = gdk_pixbuf_get_has_alpha (pixbuf);
+              data.bits_per_sample = gdk_pixbuf_get_bits_per_sample (pixbuf);
+              data.width           = gdk_pixbuf_get_width (pixbuf);
+              data.height          = gdk_pixbuf_get_height (pixbuf);
+              data.rowstride       = gdk_pixbuf_get_rowstride (pixbuf);
+              data.colorspace      = (gint) gdk_pixbuf_get_colorspace (pixbuf);
+
+              tumbler_thumbnail_save_pixbuf (lp->data, &data, mtime, NULL, &error);
+            }
           }
     }
 
diff --git a/plugins/xdg-cache/xdg-cache-thumbnail.c b/plugins/xdg-cache/xdg-cache-thumbnail.c
index 2ea1d44..c8a0f6f 100644
--- a/plugins/xdg-cache/xdg-cache-thumbnail.c
+++ b/plugins/xdg-cache/xdg-cache-thumbnail.c
@@ -67,7 +67,7 @@ static gboolean xdg_cache_thumbnail_needs_update   (TumblerThumbnail       *thum
                                                     const gchar            *uri,
                                                     guint64                 mtime);
 static gboolean xdg_cache_thumbnail_save_pixbuf    (TumblerThumbnail       *thumbnail,
-                                                    GdkPixbuf              *pixbuf,
+                                                    TumblerImageData       *data,
                                                     guint64                 mtime,
                                                     GCancellable           *cancellable,
                                                     GError                **error);
@@ -289,7 +289,7 @@ xdg_cache_thumbnail_needs_update (TumblerThumbnail *thumbnail,
 
 static gboolean
 xdg_cache_thumbnail_save_pixbuf (TumblerThumbnail *thumbnail,
-                                 GdkPixbuf        *pixbuf,
+                                 TumblerImageData *data,
                                  guint64           mtime,
                                  GCancellable     *cancellable,
                                  GError          **error)
@@ -297,6 +297,7 @@ xdg_cache_thumbnail_save_pixbuf (TumblerThumbnail *thumbnail,
   XDGCacheThumbnail *cache_thumbnail = XDG_CACHE_THUMBNAIL (thumbnail);
   GFileOutputStream *stream;
   GdkPixbuf         *dest_pixbuf;
+  GdkPixbuf         *src_pixbuf;
   GError            *err = NULL;
   GFile             *dest_file;
   GFile             *flavor_dir;
@@ -309,7 +310,6 @@ xdg_cache_thumbnail_save_pixbuf (TumblerThumbnail *thumbnail,
   gint               height;
 
   g_return_val_if_fail (XDG_CACHE_IS_THUMBNAIL (thumbnail), FALSE);
-  g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
   g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
@@ -317,15 +317,25 @@ xdg_cache_thumbnail_save_pixbuf (TumblerThumbnail *thumbnail,
   if (g_cancellable_set_error_if_cancelled (cancellable, error))
     return FALSE;
 
+  
   /* determine dimensions of the thumbnail pixbuf */
-  width = gdk_pixbuf_get_width (pixbuf);
-  height = gdk_pixbuf_get_height (pixbuf);
+  width = data->width;
+  height = data->height;
+
+  src_pixbuf = gdk_pixbuf_new_from_data (data->data,
+                                         (GdkColorspace) data->colorspace,
+                                         data->has_alpha,
+                                         data->bits_per_sample,
+                                         data->width,
+                                         data->height,
+                                         data->rowstride,
+                                         NULL, NULL);
 
   /* generate a new pixbuf that is guranteed to follow the thumbnail spec */
   dest_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width, height);
   
   /* copy the thumbnail pixbuf into the destination pixbuf */
-  gdk_pixbuf_copy_area (pixbuf, 0, 0, width, height, dest_pixbuf, 0, 0);
+  gdk_pixbuf_copy_area (src_pixbuf, 0, 0, width, height, dest_pixbuf, 0, 0);
 
   /* determine the URI of the temporary file to write to */
   temp_file = xdg_cache_cache_get_temp_file (cache_thumbnail->uri,
@@ -388,8 +398,9 @@ xdg_cache_thumbnail_save_pixbuf (TumblerThumbnail *thumbnail,
       g_object_unref (stream);
     }
 
-  /* destroy the destination pixbuf and temporary GFile */
+  /* destroy the source pixbuf, destination pixbuf and temporary GFile */
   g_object_unref (dest_pixbuf);
+  g_object_unref (src_pixbuf);
   g_object_unref (temp_file);
 
   if (err != NULL)
diff --git a/tumbler/tumbler-thumbnail.c b/tumbler/tumbler-thumbnail.c
index 45bab9f..a4736ce 100644
--- a/tumbler/tumbler-thumbnail.c
+++ b/tumbler/tumbler-thumbnail.c
@@ -119,13 +119,12 @@ tumbler_thumbnail_needs_update (TumblerThumbnail *thumbnail,
 
 gboolean
 tumbler_thumbnail_save_pixbuf (TumblerThumbnail *thumbnail,
-                               GdkPixbuf        *pixbuf,
+                               TumblerImageData *pixbuf,
                                guint64           mtime,
                                GCancellable     *cancellable,
                                GError          **error)
 {
   g_return_val_if_fail (TUMBLER_IS_THUMBNAIL (thumbnail), FALSE);
-  g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
   g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
   g_return_val_if_fail (TUMBLER_THUMBNAIL_GET_IFACE (thumbnail)->save_pixbuf != NULL, FALSE);
diff --git a/tumbler/tumbler-thumbnail.h b/tumbler/tumbler-thumbnail.h
index 3c4896b..f62db41 100644
--- a/tumbler/tumbler-thumbnail.h
+++ b/tumbler/tumbler-thumbnail.h
@@ -27,8 +27,6 @@
 
 #include <gio/gio.h>
 
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
 #include <tumbler/tumbler-enum-types.h>
 #include <tumbler/tumbler-cache.h>
 
@@ -42,6 +40,16 @@ G_BEGIN_DECLS
 typedef struct _TumblerThumbnail      TumblerThumbnail;
 typedef struct _TumblerThumbnailIface TumblerThumbnailIface;
 
+typedef struct {
+  const guchar *data;
+  gboolean has_alpha;
+  gint bits_per_sample;
+  gint width;
+  gint height;
+  gint rowstride;
+  gint colorspace;
+} TumblerImageData;
+
 struct _TumblerThumbnailIface
 {
   GTypeInterface __parent__;
@@ -56,7 +64,7 @@ struct _TumblerThumbnailIface
                             const gchar      *uri,
                             guint64           mtime);
   gboolean (*save_pixbuf)  (TumblerThumbnail *thumbnail,
-                            GdkPixbuf        *pixbuf,
+                            TumblerImageData *pixbuf,
                             guint64           mtime,
                             GCancellable     *cancellable,
                             GError          **error);
@@ -76,7 +84,7 @@ gboolean                tumbler_thumbnail_needs_update    (TumblerThumbnail
                                                            const gchar           *uri,
                                                            guint64                mtime);
 gboolean                tumbler_thumbnail_save_pixbuf     (TumblerThumbnail      *thumbnail,
-                                                           GdkPixbuf             *pixbuf,
+                                                           TumblerImageData      *pixbuf,
                                                            guint64                mtime,
                                                            GCancellable          *cancellable,
                                                            GError               **error);



More information about the Xfce4-commits mailing list