From cd72628aeb4c5f040891990cf4900d9d6677bc80 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Wed, 19 Jan 2022 19:51:51 -0800
Subject: [PATCH] Don't display progress() updates more than twice a second

To send less text over slow (e.g. 4800bps) modems. For Nelgin.

This makes the interval argument unnecessary I think.
---
 src/sbbs3/con_out.cpp | 4 ++++
 src/sbbs3/sbbs.h      | 1 +
 2 files changed, 5 insertions(+)

diff --git a/src/sbbs3/con_out.cpp b/src/sbbs3/con_out.cpp
index 576004e908..c44df8a428 100644
--- a/src/sbbs3/con_out.cpp
+++ b/src/sbbs3/con_out.cpp
@@ -1400,11 +1400,15 @@ void sbbs_t::progress(const char* text, int count, int total, int interval)
 		return;	// Don't output this for events
 	if((count%interval) != 0)
 		return;
+	clock_t now = msclock();
+	if(now - last_progress < 500)
+		return;
 	if(text == NULL) text = "";
 	float pct = total ? ((float)count/total)*100.0F : 100.0F;
 	SAFEPRINTF2(str, "[ %-8s  %4.1f%% ]", text, pct);
 	cond_newline();
 	cursor_left(backfill(str, pct, cfg.color[clr_progress_full], cfg.color[clr_progress_empty]));
+	last_progress = now;
 }
 
 struct savedline {
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index b8298d725e..7930ab8fd5 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -848,6 +848,7 @@ public:
 	bool	update_nodeterm(void);
 	int		backfill(const char* str, float pct, int full_attr, int empty_attr);
 	void	progress(const char* str, int count, int total, int interval=1);
+	clock_t	last_progress = 0;
 	bool	saveline(void);
 	bool	restoreline(void);
 	int		petscii_to_ansibbs(unsigned char);
-- 
GitLab