[eog/mcatanzaro/thumbnails] Update for gnome-desktop thumbnail API changes




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]