diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-09-10 03:44:53 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-09-10 03:44:53 -0400 |
commit | 9cc5ed9ce22124e4830527cf6777ed9177407378 (patch) | |
tree | c3f5e1e53943c3f8ae8ef20f59ab980f77aca4de /finch/gntxfer.c | |
parent | 6a68ac03ece3e6bf9f3c2f2ff66a971675c432ef (diff) | |
download | pidgin-9cc5ed9ce22124e4830527cf6777ed9177407378.tar.gz |
Convert file transfer times to monotonic clock.
These are used to calculate elapsed transfer times.
Diffstat (limited to 'finch/gntxfer.c')
-rw-r--r-- | finch/gntxfer.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/finch/gntxfer.c b/finch/gntxfer.c index c38f170b3a..ec6b6e1154 100644 --- a/finch/gntxfer.c +++ b/finch/gntxfer.c @@ -394,16 +394,20 @@ finch_xfer_dialog_update_xfer(PurpleXfer *xfer) char prog_str[5]; double kb_sent; double kbps = 0.0; - time_t elapsed, now; + gint64 now; + gint64 elapsed = 0; char *kbsec; gboolean send; - if ((now = purple_xfer_get_end_time(xfer)) == 0) - now = time(NULL); + if (purple_xfer_get_start_time(xfer) > 0) { + if ((now = purple_xfer_get_end_time(xfer)) == 0) { + now = g_get_monotonic_time(); + } + elapsed = now - purple_xfer_get_start_time(xfer); + } kb_sent = purple_xfer_get_bytes_sent(xfer) / 1024.0; - elapsed = (purple_xfer_get_start_time(xfer) > 0 ? now - purple_xfer_get_start_time(xfer) : 0); - kbps = (elapsed > 0 ? (kb_sent / elapsed) : 0); + kbps = (elapsed > 0 ? (kb_sent * G_USEC_PER_SEC) / elapsed : 0); g_return_if_fail(xfer_dialog != NULL); g_return_if_fail(xfer != NULL); |