[Spice-devel] [PATCH spice-gtk] file-xfer: Simplify time handling

Victor Toso lists at victortoso.com
Tue Sep 8 01:58:19 PDT 2015


Hey,

On Tue, Aug 25, 2015 at 07:05:37PM +0200, Pavel Grunt wrote:
> Use g_get_monotonic_time() instead of g_date_time_new_now_local().
> g_get_monotonic_time doesn't suffer discontinuities and it is sufficient
> for our purposes. There is no need for the complexity of GDateTime.

Patch looks good!
  toso

> ---
>  src/channel-main.c | 26 +++++++++-----------------
>  1 file changed, 9 insertions(+), 17 deletions(-)
> 
> diff --git a/src/channel-main.c b/src/channel-main.c
> index f5115aa..91e57b1 100644
> --- a/src/channel-main.c
> +++ b/src/channel-main.c
> @@ -71,8 +71,8 @@ typedef struct SpiceFileXferTask {
>      char                           buffer[FILE_XFER_CHUNK_SIZE];
>      uint64_t                       read_bytes;
>      uint64_t                       file_size;
> -    GDateTime                      *start_time;
> -    GDateTime                      *last_update;
> +    gint64                         start_time;
> +    gint64                         last_update;
>      GError                         *error;
>  } SpiceFileXferTask;
>  
> @@ -1697,10 +1697,6 @@ static void file_xfer_task_free(SpiceFileXferTask *task)
>      g_clear_object(&task->channel);
>      g_clear_object(&task->file);
>      g_clear_object(&task->file_stream);
> -    if (spice_util_get_debug()) {
> -        g_date_time_unref(task->start_time);
> -        g_date_time_unref(task->last_update);
> -    }
>      g_free(task);
>  }
>  
> @@ -1737,10 +1733,9 @@ static void file_xfer_close_cb(GObject      *object,
>      } else {
>          g_simple_async_result_set_op_res_gboolean(res, TRUE);
>          if (spice_util_get_debug()) {
> -            GDateTime *now = g_date_time_new_now_local();
> +            gint64 now = g_get_monotonic_time();
>              gchar *basename = g_file_get_basename(task->file);
> -            double seconds =
> -                (double) g_date_time_difference(now, task->start_time) / G_TIME_SPAN_SECOND;
> +            double seconds = (double) (now - task->start_time) / G_TIME_SPAN_SECOND;
>              gchar *file_size_str = g_format_size(task->file_size);
>              gchar *transfer_speed_str = g_format_size(task->file_size / seconds);
>  
> @@ -1751,7 +1746,6 @@ static void file_xfer_close_cb(GObject      *object,
>              g_free(basename);
>              g_free(file_size_str);
>              g_free(transfer_speed_str);
> -            g_date_time_unref(now);
>          }
>      }
>      g_simple_async_result_complete_in_idle(res);
> @@ -1777,17 +1771,15 @@ static void file_xfer_data_flushed_cb(GObject *source_object,
>  
>      if (spice_util_get_debug()) {
>          const GTimeSpan interval = 20 * G_TIME_SPAN_SECOND;
> -        GDateTime *now = g_date_time_new_now_local();
> +        gint64 now = g_get_monotonic_time();
>  
> -        if (interval < g_date_time_difference(now, task->last_update)) {
> +        if (interval < now - task->last_update) {
>              gchar *basename = g_file_get_basename(task->file);
> -            g_date_time_unref(task->last_update);
> -            task->last_update = g_date_time_ref(now);
> +            task->last_update = now;
>              SPICE_DEBUG("transferred %.2f%% of the file %s",
>                          100.0 * task->read_bytes / task->file_size, basename);
>              g_free(basename);
>          }
> -        g_date_time_unref(now);
>      }
>  
>      if (task->progress_callback)
> @@ -2956,8 +2948,8 @@ static void file_xfer_send_start_msg_async(SpiceMainChannel *channel,
>  
>          if (spice_util_get_debug()) {
>              gchar *basename = g_file_get_basename(task->file);
> -            task->start_time = g_date_time_new_now_local();
> -            task->last_update = g_date_time_ref(task->start_time);
> +            task->start_time = g_get_monotonic_time();
> +            task->last_update = task->start_time;
>  
>              SPICE_DEBUG("transfer of file %s has started", basename);
>              g_free(basename);
> -- 
> 2.5.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list