From 8e719e3ef5ad90b7f8ad9c82a853df1afb23afd7 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Wed, 18 Apr 2007 20:02:41 +0000
Subject: [PATCH] - Prevent the internal progress meter from updating more
 frequently than once   per second.

---
 CHANGES        |  4 ++++
 RELEASE-NOTES  |  3 +++
 lib/progress.c | 11 +++++++++--
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/CHANGES b/CHANGES
index 8ca34603a4..8b1c024c3f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
 
                                   Changelog
 
+Daniel S (18 April 2007)
+- Prevent the internal progress meter from updating more frequently than once
+  per second.
+
 Dan F (17 April 2007)
 - Added test cases 296, 297 and 298 to test --ftp-method handling
 
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 1a6239a15d..c70daa2228 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -21,6 +21,7 @@ This release includes the following bugfixes:
    new host on the net with the same silly domain the test was using
    for a host which was supposed not to exist.
  o test suite SSL certificate works better with newer stunnel
+ o internal progress meter update frequency back to once per second
 
 This release includes the following known bugs:
 
@@ -29,6 +30,8 @@ This release includes the following known bugs:
 Other curl-related news:
 
  o PycURL 7.16.2 was released: http://pycurl.sf.net/
+ o TclCurl 7.16.2 was released:
+   http://personal1.iddeo.es/andresgarci/tclcurl/english/
 
 New curl mirrors:
 
diff --git a/lib/progress.c b/lib/progress.c
index 9d9096069b..ad09938f8c 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -245,6 +245,7 @@ int Curl_pgrsUpdate(struct connectdata *conn)
   long ulestimate=0;
   long dlestimate=0;
   long total_estimate;
+  bool shownow=FALSE;
 
   now = Curl_tvnow(); /* what time is it */
 
@@ -266,6 +267,7 @@ int Curl_pgrsUpdate(struct connectdata *conn)
 
   /* Calculations done at most once a second, unless end is reached */
   if(data->progress.lastshow != (long)now.tv_sec) {
+    shownow = TRUE;
 
     data->progress.lastshow = now.tv_sec;
 
@@ -346,7 +348,12 @@ int Curl_pgrsUpdate(struct connectdata *conn)
       return result;
     }
 
-    /* If there's no external callback set, use internal code to show progress */
+    if(!shownow)
+      /* only show the internal progress meter once per second */
+      return 0;
+
+    /* If there's no external callback set, use internal code to show
+       progress */
 
     if(!(data->progress.flags & PGRS_HEADERS_OUT)) {
       if(data->reqdata.resume_from) {
@@ -422,7 +429,7 @@ int Curl_pgrsUpdate(struct connectdata *conn)
     /* we flush the output stream to make it appear as soon as possible */
     fflush(data->set.err);
 
-  }
+  } /* !(data->progress.flags & PGRS_HIDE) */
 
   return 0;
 }
-- 
GitLab