summaryrefslogtreecommitdiff
path: root/src/tool_cb_prg.c
diff options
context:
space:
mode:
authorTobias Markus <tobias@markus-regensburg.de>2014-01-06 20:32:33 +0100
committerDaniel Stenberg <daniel@haxx.se>2014-01-18 22:46:32 +0100
commit93ca1d2065e570382853710b4f8fd9da38eb9668 (patch)
treedc9a7c7f56c4f0962f54d7545c0217d786305f8a /src/tool_cb_prg.c
parente35ffda0b3133def6f40d498ffa2faf60fb72899 (diff)
downloadgnurl-93ca1d2065e570382853710b4f8fd9da38eb9668.tar.gz
gnurl-93ca1d2065e570382853710b4f8fd9da38eb9668.tar.bz2
gnurl-93ca1d2065e570382853710b4f8fd9da38eb9668.zip
progress bar: always update when at 100%
Currently, the progress bar is updated at 5Hz. Because it is often not updated to 100% when the download is finished and curl exits, the bar is often "stuck" at 90-something, thus irritating the user. This patch fixes this by always updating the progress bar (instead of waiting for 200ms to have elapsed) while the download is finished but curl has not yet exited. This should not greatly affect performance because that moment is rather short. Signed-off-by: Tobias Markus <tobias@markus-regensburg.de>
Diffstat (limited to 'src/tool_cb_prg.c')
-rw-r--r--src/tool_cb_prg.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c
index 00078d0de..6e6f50359 100644
--- a/src/tool_cb_prg.c
+++ b/src/tool_cb_prg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -55,16 +55,17 @@ int tool_progress_cb(void *clientp,
curl_off_t total;
curl_off_t point;
- if(bar->calls && (tvdiff(now, bar->prevtime) < 200L))
- /* after first call, limit progress-bar updating to 5 Hz */
- return 0;
-
/* expected transfer size */
total = dltotal + ultotal + bar->initial_size;
/* we've come this far */
point = dlnow + ulnow + bar->initial_size;
+ if(bar->calls && (tvdiff(now, bar->prevtime) < 200L) && point < total)
+ /* after first call, limit progress-bar updating to 5 Hz */
+ /* update when we're at 100% even if last update is less than 200ms ago */
+ return 0;
+
if(point > total)
/* we have got more than the expected total! */
total = point;