summaryrefslogtreecommitdiff
path: root/finch/gntxfer.c
diff options
context:
space:
mode:
authorElliott Sales de Andrade <qulogic@pidgin.im>2019-09-10 03:44:53 -0400
committerElliott Sales de Andrade <qulogic@pidgin.im>2019-09-10 03:44:53 -0400
commit9cc5ed9ce22124e4830527cf6777ed9177407378 (patch)
treec3f5e1e53943c3f8ae8ef20f59ab980f77aca4de /finch/gntxfer.c
parent6a68ac03ece3e6bf9f3c2f2ff66a971675c432ef (diff)
downloadpidgin-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.c14
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);