[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