-# progress meter: avoid superfluous updates and duplicate lines
authorDaniel Stenberg <daniel@haxx.se>
Mon, 16 Apr 2012 22:45:20 +0000 (00:45 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 16 Apr 2012 22:45:20 +0000 (00:45 +0200)
By comparing if a different "progress point" is reached or not since the
previous update, the progress function callback for this now avoids many
superfluous screen updates. This has the nice side-effect that it fixes
a problem that causes a second progress meter line.

The second line output happened because when we use the -# progress
meter, we force a newline output after the transfer in the main loop in
curl, but when libcurl calls the progress callback from
curl_easy_cleanup() it would then output the progress display
again. Possibly the naive newline output is wrong but this optimization
was suitable anyway...

Reported by: Daniel Theron
Bug: http://curl.haxx.se/bug/view.cgi?id=3517418

src/tool_cb_prg.c

index 809b4d4..7a701b6 100644 (file)
@@ -76,7 +76,7 @@ int tool_progress_cb(void *clientp,
       prevblock++;
     }
   }
-  else {
+  else if(point != bar->prev) {
     frac = (double)point / (double)total;
     percent = frac * 100.0f;
     barwidth = bar->width - 7;