[evince/wip/gpoo/fix-ev-window-deprecations] shell: Make opening file year-2038-safe



commit 6e24a73c40e2b6bfc0bbc79d451bb0f9e05cafc7
Author: Germán Poo-Caamaño <gpoo gnome org>
Date:   Fri Jul 3 21:32:35 2020 -0400

    shell: Make opening file year-2038-safe
    
    Replace GTimeval-related API by the year-2038-safe GDateTime when
    opening files.

 shell/ev-window.c | 33 ++++++++++++++++++++++++---------
 1 file changed, 24 insertions(+), 9 deletions(-)
---
diff --git a/shell/ev-window.c b/shell/ev-window.c
index a64ca238..1f3ea24d 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -198,7 +198,7 @@ typedef struct {
        /* Document */
        EvDocumentModel *model;
        char *uri;
-       glong uri_mtime;
+       gint64 uri_mtime;
        char *local_uri;
        char *display_name;
        char *edit_name;
@@ -2185,10 +2185,14 @@ set_uri_mtime (GFile        *source,
                priv->uri_mtime = 0;
                g_error_free (error);
        } else {
-               GTimeVal mtime;
+               g_autoptr(GDateTime) dt;
+
+               dt = g_file_info_get_modification_date_time (info);
+               if (dt != NULL)
+                       priv->uri_mtime = g_date_time_to_unix (dt);
+               else
+                       priv->uri_mtime = 0;
 
-               g_file_info_get_modification_time (info, &mtime);
-               priv->uri_mtime = mtime.tv_sec;
                g_object_unref (info);
        }
 
@@ -2666,8 +2670,9 @@ query_remote_uri_mtime_cb (GFile        *remote,
 {
        EvWindowPrivate *priv = GET_PRIVATE (ev_window);
        GFileInfo *info;
-       GTimeVal   mtime;
+       gint64     mtime;
        GError    *error = NULL;
+       g_autoptr(GDateTime) dt;
 
        info = g_file_query_info_finish (remote, async_result, &error);
        if (error) {
@@ -2678,12 +2683,22 @@ query_remote_uri_mtime_cb (GFile        *remote,
                return;
        }
 
-       g_file_info_get_modification_time (info, &mtime);
-       if (priv->uri_mtime != mtime.tv_sec) {
+       dt = g_file_info_get_modification_date_time (info);
+       if (dt == NULL) {
+               g_object_unref (remote);
+               ev_window_reload_local (ev_window);
+               g_object_unref (info);
+
+               return;
+       }
+
+        mtime = g_date_time_to_unix (dt);
+
+       if (priv->uri_mtime != mtime) {
                GFile *target_file;
 
                /* Remote file has changed */
-               priv->uri_mtime = mtime.tv_sec;
+               priv->uri_mtime = mtime;
 
                ev_window_reset_progress_cancellable (ev_window);
                
@@ -2703,7 +2718,7 @@ query_remote_uri_mtime_cb (GFile        *remote,
                g_object_unref (remote);
                ev_window_reload_local (ev_window);
        }
-       
+
        g_object_unref (info);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]