When the data we have buffered to write to a terminal grows beyond a
authornicm <nicm@openbsd.org>
Wed, 19 Apr 2017 06:52:27 +0000 (06:52 +0000)
committernicm <nicm@openbsd.org>
Wed, 19 Apr 2017 06:52:27 +0000 (06:52 +0000)
commit0d580acb489ac9a492513c28459fc7bc61780f1a
tree972f5be3821f00e5281edddb21247651fea212cf
parent7b08a90aae262418a4b5fe9eae6b24d21fd1dcd4
When the data we have buffered to write to a terminal grows beyond a
reasonable amount (currently width * height * 8 bytes), discard all
output to the terminal and start trying to redraw periodically
instead. Continue with this until the amount of data we are trying to
write falls to a low level again.

This helps to prevent tmux sitting on a huge buffer of data when there
are processes with fast output running inside tmux but the outside
terminal is slow.

A new client_discarded format holds the amount of data that has been
discarded due to this mechanism.

The three variables (when to start this, when to stop, and how often to
redraw) are basically "works for me" at the moment, this is going in to
see how it goes and if it causes problems for anyone else.
usr.bin/tmux/format.c
usr.bin/tmux/server-client.c
usr.bin/tmux/tmux.1
usr.bin/tmux/tmux.h
usr.bin/tmux/tty.c