[eog/mcatanzaro/thumbnails] Update for gnome-desktop thumbnail API changes
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [eog/mcatanzaro/thumbnails] Update for gnome-desktop thumbnail API changes
- Date: Mon, 11 Apr 2022 19:23:58 +0000 (UTC)
commit 2ee5f00402c1c1d1691f6a2b17b1f51c3033c6e9
Author: Michael Catanzaro <mcatanzaro redhat com>
Date: Mon Apr 11 14:23:03 2022 -0500
Update for gnome-desktop thumbnail API changes
See gnome-desktop!132
src/eog-file-chooser.c | 13 ++++++++++++-
src/eog-thumbnail.c | 37 ++++++++++++++++++++++++++-----------
2 files changed, 38 insertions(+), 12 deletions(-)
---
diff --git a/src/eog-file-chooser.c b/src/eog-file-chooser.c
index da24db89..1910c9ae 100644
--- a/src/eog-file-chooser.c
+++ b/src/eog-file-chooser.c
@@ -325,6 +325,7 @@ update_preview_cb (GtkFileChooser *file_chooser, gpointer data)
GFileInfo *file_info;
GdkPixbuf *pixbuf = NULL;
gboolean have_preview = FALSE;
+ GError *error = NULL;
priv = EOG_FILE_CHOOSER (file_chooser)->priv;
@@ -371,9 +372,19 @@ update_preview_cb (GtkFileChooser *file_chooser, gpointer data)
priv->thumb_factory,
uri, mtime);
- if (G_LIKELY (can_thumbnail && !has_failed))
+ if (G_LIKELY (can_thumbnail && !has_failed)) {
+#if defined(GNOME_DESKTOP_PLATFORM_VERSION) && GNOME_DESKTOP_PLATFORM_VERSION >= 43
+ pixbuf = gnome_desktop_thumbnail_factory_generate_thumbnail (
+ priv->thumb_factory, uri, mime_type, NULL, &error);
+ if (error) {
+ g_warning ("Failed to generate thumbnail: %s",
error->message);
+ g_clear_error (&error);
+ }
+#else
pixbuf = gnome_desktop_thumbnail_factory_generate_thumbnail (
priv->thumb_factory, uri, mime_type);
+#endif
+ }
g_free (mime_type);
}
diff --git a/src/eog-thumbnail.c b/src/eog-thumbnail.c
index 8fd2c7cf..dc43126e 100644
--- a/src/eog-thumbnail.c
+++ b/src/eog-thumbnail.c
@@ -76,15 +76,6 @@ set_vfs_error (GError **error, GError *ioerror)
"%s", ioerror ? ioerror->message : "VFS error making a thumbnail");
}
-static void
-set_thumb_error (GError **error, int error_id, const char *string)
-{
- g_set_error (error,
- EOG_THUMB_ERROR,
- error_id,
- "%s", string);
-}
-
static GdkPixbuf*
get_valid_thumbnail (EogThumbData *data, GError **error)
{
@@ -468,6 +459,7 @@ eog_thumbnail_load (EogImage *image, GError **error)
GFile *file;
EogThumbData *data;
GdkPixbuf *pixbuf = NULL;
+ GError *local_error = NULL;
g_return_val_if_fail (image != NULL, NULL);
g_return_val_if_fail (error != NULL && *error == NULL, NULL);
@@ -482,7 +474,7 @@ eog_thumbnail_load (EogImage *image, GError **error)
if (!data->can_read ||
(data->failed_thumb_exists && gnome_desktop_thumbnail_factory_has_valid_failed_thumbnail
(factory, data->uri_str, data->mtime))) {
eog_debug_message (DEBUG_THUMBNAIL, "%s: bad permissions or valid failed thumbnail
present",data->uri_str);
- set_thumb_error (error, EOG_THUMB_ERROR_GENERIC, "Thumbnail creation failed");
+ g_set_error_literal (error, EOG_THUMB_ERROR, EOG_THUMB_ERROR_GENERIC, "Thumbnail creation
failed");
return NULL;
}
@@ -505,18 +497,41 @@ eog_thumbnail_load (EogImage *image, GError **error)
} else {
/* generate a thumbnail from the file */
eog_debug_message (DEBUG_THUMBNAIL, "%s: creating from file",data->uri_str);
+#if defined(GNOME_DESKTOP_PLATFORM_VERSION) && GNOME_DESKTOP_PLATFORM_VERSION >= 43
+ thumb = gnome_desktop_thumbnail_factory_generate_thumbnail (factory, data->uri_str,
data->mime_type, NULL, &local_error);
+ if (local_error) {
+ g_set_error (error, EOG_THUMB_ERROR, EOG_THUMB_ERROR_GENERIC, "Generating
thumbnail failed: %s", local_error->message);
+ g_clear_error (&local_error);
+ }
+#else
thumb = gnome_desktop_thumbnail_factory_generate_thumbnail (factory, data->uri_str,
data->mime_type);
+ if (!thumb)
+ g_set_error (*error, EOG_THUMB_ERROR, EOG_THUMB_ERROR_GENERIC, "Generating
thumbnail failed: %s", local_error->message);
+#endif
}
if (thumb != NULL) {
/* Save the new thumbnail */
+#if defined(GNOME_DESKTOP_PLATFORM_VERSION) && GNOME_DESKTOP_PLATFORM_VERSION >= 43
+ gnome_desktop_thumbnail_factory_save_thumbnail (factory, thumb, data->uri_str,
data->mtime, NULL, &local_error);
+ if (local_error) {
+ g_set_error (error, EOG_THUMB_ERROR, EOG_THUMB_ERROR_GENERIC, "Saving
thumbnail failed: %s", local_error->message);
+ g_clear_error (&local_error);
+ } else {
+ eog_debug_message (DEBUG_THUMBNAIL, "%s: normal thumbnail
saved",data->uri_str);
+ }
+#else
gnome_desktop_thumbnail_factory_save_thumbnail (factory, thumb, data->uri_str,
data->mtime);
eog_debug_message (DEBUG_THUMBNAIL, "%s: normal thumbnail saved",data->uri_str);
+#endif
} else {
/* Save a failed thumbnail, to stop further thumbnail attempts */
+#if defined(GNOME_DESKTOP_PLATFORM_VERSION) && GNOME_DESKTOP_PLATFORM_VERSION >= 43
+ gnome_desktop_thumbnail_factory_create_failed_thumbnail (factory, data->uri_str,
data->mtime, NULL, NULL);
+#else
gnome_desktop_thumbnail_factory_create_failed_thumbnail (factory, data->uri_str,
data->mtime);
+#endif
eog_debug_message (DEBUG_THUMBNAIL, "%s: failed thumbnail saved",data->uri_str);
- set_thumb_error (error, EOG_THUMB_ERROR_GENERIC, "Thumbnail creation failed");
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]