Commit f8ceb9d2 authored by Debarshi Ray's avatar Debarshi Ray

Switch to our own thumbnailing infrastructure

https://bugzilla.gnome.org/show_bug.cgi?id=690255
parent 12abb032
......@@ -898,7 +898,7 @@ photos_base_item_thumbnail_path_info (GObject *source_object, GAsyncResult *res,
GFile *file = G_FILE (source_object);
GFileInfo *info = NULL;
info = g_file_query_info_finish (file, res, &error);
info = photos_utils_file_query_info_finish (file, res, &error);
if (error != NULL)
{
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
......@@ -966,13 +966,13 @@ photos_base_item_create_thumbnail_cb (GObject *source_object, GAsyncResult *res,
goto out;
}
g_file_query_info_async (file,
G_FILE_ATTRIBUTE_THUMBNAIL_PATH,
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT,
priv->cancellable,
photos_base_item_thumbnail_path_info,
self);
photos_utils_file_query_info_async (file,
G_FILE_ATTRIBUTE_THUMBNAIL_PATH,
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT,
priv->cancellable,
photos_base_item_thumbnail_path_info,
self);
out:
g_object_unref (file);
......@@ -988,7 +988,7 @@ photos_base_item_file_query_info (GObject *source_object, GAsyncResult *res, gpo
GFile *file = G_FILE (source_object);
GFileInfo *info = NULL;
info = g_file_query_info_finish (file, res, &error);
info = photos_utils_file_query_info_finish (file, res, &error);
if (error != NULL)
{
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
......@@ -2211,13 +2211,13 @@ photos_base_item_refresh_icon (PhotosBaseItem *self)
return;
file = g_file_new_for_uri (priv->uri);
g_file_query_info_async (file,
G_FILE_ATTRIBUTE_THUMBNAIL_PATH,
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT,
priv->cancellable,
photos_base_item_file_query_info,
self);
photos_utils_file_query_info_async (file,
G_FILE_ATTRIBUTE_THUMBNAIL_PATH,
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT,
priv->cancellable,
photos_base_item_file_query_info,
self);
g_object_unref (file);
}
......
......@@ -32,7 +32,6 @@
#include <glib.h>
#include <glib/gi18n.h>
#include <goa/goa.h>
#include <libgnome-desktop/gnome-desktop-thumbnail.h>
#include "photos-base-manager.h"
#include "photos-debug.h"
......@@ -159,7 +158,7 @@ photos_facebook_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cance
remote_file = g_file_new_for_uri (thumbnail_image->source);
uri = photos_base_item_get_uri (item);
local_path = gnome_desktop_thumbnail_path_for_uri (uri, GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
local_path = photos_utils_get_thumbnail_path_for_uri (uri);
local_file = g_file_new_for_path (local_path);
local_dir = g_path_get_dirname (local_path);
......
......@@ -32,7 +32,6 @@
#include <glib/gi18n.h>
#include <goa/goa.h>
#include <grilo.h>
#include <libgnome-desktop/gnome-desktop-thumbnail.h>
#include "photos-base-manager.h"
#include "photos-debug.h"
......@@ -234,7 +233,7 @@ photos_flickr_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancell
remote_file = g_file_new_for_uri (thumbnail_uri);
uri = photos_base_item_get_uri (item);
local_path = gnome_desktop_thumbnail_path_for_uri (uri, GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
local_path = photos_utils_get_thumbnail_path_for_uri (uri);
local_file = g_file_new_for_path (local_path);
local_dir = g_path_get_dirname (local_path);
......
......@@ -30,7 +30,6 @@
#include <gio/gio.h>
#include <glib.h>
#include <glib/gi18n.h>
#include <libgnome-desktop/gnome-desktop-thumbnail.h>
#include "photos-base-manager.h"
#include "photos-debug.h"
......@@ -189,7 +188,7 @@ photos_google_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancell
remote_file = g_file_new_for_uri (thumbnail_uri);
uri = photos_base_item_get_uri (item);
local_path = gnome_desktop_thumbnail_path_for_uri (uri, GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
local_path = photos_utils_get_thumbnail_path_for_uri (uri);
local_file = g_file_new_for_path (local_path);
local_dir = g_path_get_dirname (local_path);
......
......@@ -110,24 +110,46 @@ photos_local_item_create_pipeline_path (PhotosBaseItem *item)
static gboolean
photos_local_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
{
PhotosLocalItem *self = PHOTOS_LOCAL_ITEM (item);
GFile *file = NULL;
GQuark orientation;
gboolean ret_val = FALSE;
const gchar *mime_type;
const gchar *uri;
gchar *pipeline_path = NULL;
gchar *pipeline_uri = NULL;
gint64 height;
gint64 mtime;
gint64 width;
uri = photos_base_item_get_uri (item);
uri = photos_base_item_get_uri (PHOTOS_BASE_ITEM (self));
file = g_file_new_for_uri (uri);
mime_type = photos_base_item_get_mime_type (item);
mtime = photos_base_item_get_mtime (item);
if (!photos_utils_create_thumbnail (file, mime_type, mtime, cancellable, error))
mime_type = photos_base_item_get_mime_type (PHOTOS_BASE_ITEM (self));
mtime = photos_base_item_get_mtime (PHOTOS_BASE_ITEM (self));
orientation = photos_base_item_get_orientation (PHOTOS_BASE_ITEM (self));
height = photos_base_item_get_height (PHOTOS_BASE_ITEM (self));
width = photos_base_item_get_width (PHOTOS_BASE_ITEM (self));
pipeline_path = photos_local_item_get_pipeline_path (self);
pipeline_uri = photos_utils_convert_path_to_uri (pipeline_path);
if (!photos_utils_create_thumbnail (file,
mime_type,
mtime,
orientation,
height,
width,
pipeline_uri,
cancellable,
error))
goto out;
ret_val = TRUE;
out:
g_clear_object (&file);
g_free (pipeline_path);
g_free (pipeline_uri);
return ret_val;
}
......
......@@ -82,16 +82,31 @@ static gboolean
photos_media_server_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
{
GFile *file;
GQuark orientation;
gboolean ret_val;
const gchar *mime_type;
const gchar *uri;
gint64 height;
gint64 mtime;
gint64 width;
uri = photos_base_item_get_uri (item);
file = g_file_new_for_uri (uri);
mime_type = photos_base_item_get_mime_type (item);
mtime = photos_base_item_get_mtime (item);
ret_val = photos_utils_create_thumbnail (file, mime_type, mtime, cancellable, error);
orientation = photos_base_item_get_orientation (item);
height = photos_base_item_get_height (item);
width = photos_base_item_get_width (item);
ret_val = photos_utils_create_thumbnail (file,
mime_type,
mtime,
orientation,
height,
width,
"",
cancellable,
error);
g_object_unref (file);
return ret_val;
......
......@@ -32,7 +32,6 @@
#include <string.h>
#include <glib.h>
#include <libgnome-desktop/gnome-desktop-thumbnail.h>
#include <tracker-sparql.h>
#include <libgd/gd.h>
......@@ -54,6 +53,7 @@
#include "photos-share-point-google.h"
#include "photos-share-point-online.h"
#include "photos-source.h"
#include "photos-thumbnail-factory.h"
#include "photos-tool.h"
#include "photos-tool-colors.h"
#include "photos-tool-crop.h"
......@@ -399,34 +399,32 @@ gboolean
photos_utils_create_thumbnail (GFile *file,
const gchar *mime_type,
gint64 mtime,
GQuark orientation,
gint64 original_height,
gint64 original_width,
const gchar *pipeline_uri,
GCancellable *cancellable,
GError **error)
{
GnomeDesktopThumbnailFactory *factory = NULL;
PhotosThumbnailFactory *factory = NULL;
gboolean ret_val = FALSE;
gchar *uri = NULL;
GdkPixbuf *pixbuf = NULL;
uri = g_file_get_uri (file);
factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
pixbuf = gnome_desktop_thumbnail_factory_generate_thumbnail (factory, uri, mime_type);
if (pixbuf == NULL)
{
/* FIXME: use proper #defines and enumerated types */
g_set_error (error,
g_quark_from_static_string ("gnome-desktop-error"),
0,
"GnomeDesktopThumbnailFactory failed");
goto out;
}
factory = photos_thumbnail_factory_dup_singleton (NULL, NULL);
if (!photos_thumbnail_factory_generate_thumbnail (factory,
file,
mime_type,
orientation,
original_height,
original_width,
pipeline_uri,
cancellable,
error))
goto out;
gnome_desktop_thumbnail_factory_save_thumbnail (factory, pixbuf, uri, (time_t) mtime);
ret_val = TRUE;
out:
g_clear_object (&pixbuf);
g_clear_object (&factory);
g_free (uri);
return ret_val;
}
......@@ -444,7 +442,11 @@ photos_utils_get_thumbnail_icon (const gchar *uri)
file = g_file_new_for_uri (uri);
error = NULL;
info = g_file_query_info (file, G_FILE_ATTRIBUTE_THUMBNAIL_PATH, G_FILE_QUERY_INFO_NONE, NULL, &error);
info = photos_utils_file_query_info (file,
G_FILE_ATTRIBUTE_THUMBNAIL_PATH,
G_FILE_QUERY_INFO_NONE,
NULL,
&error);
if (error != NULL)
{
g_warning ("Unable to fetch thumbnail path for %s: %s", uri, error->message);
......
......@@ -68,6 +68,10 @@ GIcon *photos_utils_create_symbolic_icon_for_scale (const gchar *name,
gboolean photos_utils_create_thumbnail (GFile *file,
const gchar *mime_type,
gint64 mtime,
GQuark orientation,
gint64 original_height,
gint64 original_width,
const gchar *pipeline_uri,
GCancellable *cancellable,
GError **error);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment