aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/os/shell.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c
index d3fd4f87fb..9514936ad0 100644
--- a/src/nvim/os/shell.c
+++ b/src/nvim/os/shell.c
@@ -26,7 +26,7 @@
#include "nvim/strings.h"
#define DYNAMIC_BUFFER_INIT { NULL, 0, 0 }
-#define NS_1_SECOND 1000000000 // 1 second, in nanoseconds
+#define NS_1_SECOND 1000000000U // 1 second, in nanoseconds
#define OUT_DATA_THRESHOLD 1024 * 10U // 10KB, "a few screenfuls" of data.
typedef struct {
@@ -344,13 +344,11 @@ static bool out_data_decide_throttle(size_t size)
static uint64_t started = 0; // Start time of the current throttle.
static size_t received = 0; // Bytes observed since last throttle.
static size_t visit = 0; // "Pulse" count of the current throttle.
- static size_t max_visits = 0;
static char pulse_msg[] = { ' ', ' ', ' ', '\0' };
if (!size) {
bool previous_decision = (visit > 0);
started = received = visit = 0;
- max_visits = 20;
return previous_decision;
}
@@ -361,17 +359,9 @@ static bool out_data_decide_throttle(size_t size)
return false;
} else if (!visit) {
started = os_hrtime();
- } else if (visit >= max_visits && size < 256 && max_visits < 999) {
- // Gobble up small chunks even if we maxed out. Avoids the case where the
- // final displayed chunk is very tiny.
- max_visits = visit + 1;
- } else if (visit >= max_visits) {
+ } else if (visit % 20 == 0) {
uint64_t since = os_hrtime() - started;
- if (since < NS_1_SECOND) {
- // Adjust max_visits based on the current relative performance.
- // Each "pulse" period should last >=1 second so that it is perceptible.
- max_visits = (2 * max_visits);
- } else {
+ if (since > (3 * NS_1_SECOND)) {
received = visit = 0;
return false;
}
@@ -379,7 +369,7 @@ static bool out_data_decide_throttle(size_t size)
visit++;
// Pulse "..." at the bottom of the screen.
- size_t tick = (visit == max_visits)
+ size_t tick = (visit % 20 == 0)
? 3 // Force all dots "..." on last visit.
: (visit % 4);
pulse_msg[0] = (tick == 0) ? ' ' : '.';