[gnome-photos] base-item: Use photos:png-guess-sizes for guessing PNG sizes
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] base-item: Use photos:png-guess-sizes for guessing PNG sizes
- Date: Thu, 7 Jan 2016 16:53:43 +0000 (UTC)
commit 2c2fdea448446d7443e52e51065a4ed34bb41375
Author: Debarshi Ray <debarshir gnome org>
Date: Sun Jan 3 13:33:45 2016 +0100
base-item: Use photos:png-guess-sizes for guessing PNG sizes
https://bugzilla.gnome.org/show_bug.cgi?id=759363
src/photos-base-item.c | 32 +++++++++++++++++++++++---------
1 files changed, 23 insertions(+), 9 deletions(-)
---
diff --git a/src/photos-base-item.c b/src/photos-base-item.c
index 2253567..c678ce3 100644
--- a/src/photos-base-item.c
+++ b/src/photos-base-item.c
@@ -1002,6 +1002,7 @@ photos_base_item_process_idle (gpointer user_data)
static void
photos_base_item_save_guess_sizes_from_buffer (GeglBuffer *buffer,
+ const gchar *mime_type,
gsize *out_size,
gsize *out_size_1,
GCancellable *cancellable)
@@ -1013,12 +1014,22 @@ photos_base_item_save_guess_sizes_from_buffer (GeglBuffer *buffer,
graph = gegl_node_new ();
buffer_source = gegl_node_new_child (graph, "operation", "gegl:buffer-source", "buffer", buffer, NULL);
- guess_sizes = gegl_node_new_child (graph,
- "operation", "photos:jpg-guess-sizes",
- "optimize", FALSE,
- "progressive", FALSE,
- "sampling", TRUE,
- NULL);
+
+ if (g_strcmp0 (mime_type, "image/png") == 0)
+ guess_sizes = gegl_node_new_child (graph,
+ "operation", "photos:png-guess-sizes",
+ "background", FALSE,
+ "bitdepth", 8,
+ "compression", -1,
+ NULL);
+ else
+ guess_sizes = gegl_node_new_child (graph,
+ "operation", "photos:jpg-guess-sizes",
+ "optimize", FALSE,
+ "progressive", FALSE,
+ "sampling", TRUE,
+ NULL);
+
gegl_node_link (buffer_source, guess_sizes);
gegl_node_process (guess_sizes);
@@ -1038,11 +1049,11 @@ photos_base_item_save_guess_sizes_in_thread_func (GTask *task,
gpointer task_data,
GCancellable *cancellable)
{
- GeglBuffer *buffer = GEGL_BUFFER (task_data);
+ PhotosBaseItemSaveData *data = (PhotosBaseItemSaveData *) task_data;
gsize *sizes;
sizes = g_malloc0_n (2, sizeof (gsize));
- photos_base_item_save_guess_sizes_from_buffer (buffer, &sizes[0], &sizes[1], cancellable);
+ photos_base_item_save_guess_sizes_from_buffer (data->buffer, data->type, &sizes[0], &sizes[1],
cancellable);
g_task_return_pointer (task, sizes, g_free);
}
@@ -2220,6 +2231,7 @@ photos_base_item_save_guess_sizes_async (PhotosBaseItem *self,
GeglBuffer *buffer;
GeglNode *graph;
GTask *task;
+ PhotosBaseItemSaveData *data;
g_return_if_fail (PHOTOS_IS_BASE_ITEM (self));
priv = self->priv;
@@ -2233,9 +2245,11 @@ photos_base_item_save_guess_sizes_async (PhotosBaseItem *self,
graph = photos_pipeline_get_graph (priv->pipeline);
buffer = photos_utils_create_buffer_from_node (graph);
+ data = photos_base_item_save_data_new (NULL, buffer, priv->mime_type);
+
task = g_task_new (self, cancellable, callback, user_data);
g_task_set_source_tag (task, photos_base_item_save_guess_sizes_async);
- g_task_set_task_data (task, g_object_ref (buffer), g_object_unref);
+ g_task_set_task_data (task, data, (GDestroyNotify) photos_base_item_save_data_free);
g_task_run_in_thread (task, photos_base_item_save_guess_sizes_in_thread_func);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]