Go to file
nicm 8c8ce08d79 On terminals without DECSLRM, when a pane that is less than the full
with of the terminal scrolls, tmux needs to redraw the entire pane. This
results in a large amount of output data which can cause slow terminals
to struggle, particularly when many lines are scrolled together quickly.

This can be reduced by only redrawing when tmux doesn't hold any
buffered data for the terminal. If a redraw is required and data is
buffered, the redraw is deferred until all that data is consumed (it is
checked after every event loop, a timer is used to ensure this happens
at some point). While a redraw is pending, no additional data will be
written to the terminal.

The redraw still happens, now it is just pushed back if it is possible
it would just add more data on top of a terminal that is already
behind. This both gives the terminal a chance to catch up, and allows
tmux to process more scrolling (that would require additional redraws)
in the meantime.

Helps with a problem reported by Greg Hurrell.
2017-04-18 20:37:49 +00:00
Makefile Merge clear-history into capture-pane. 2017-02-16 12:18:38 +00:00
alerts.c Clear window alert flags after setting winlink alert flags, fixes problem 2016-11-01 09:07:18 +00:00
arguments.c Plain stravis() because it will mangle UTF-8 characters, so add 2017-01-18 10:08:05 +00:00
attributes.c Add support for the strikethrough attribute (SGR 9), using the new smxx 2017-03-22 07:16:54 +00:00
cfg.c cfg_file can be static. 2017-04-05 10:45:39 +00:00
client.c Add support for custom command aliases, this is an array option which 2017-01-24 19:53:37 +00:00
cmd-attach-session.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
cmd-bind-key.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-break-pane.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
cmd-capture-pane.c Merge clear-history into capture-pane. 2017-02-16 12:18:38 +00:00
cmd-choose-buffer.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-choose-client.c Give each client a name. This defaults to the tty name as before but 2017-04-05 10:49:46 +00:00
cmd-choose-tree.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-command-prompt.c It is silly for cmd_list_parse to return an integer error when it could 2017-01-15 22:00:56 +00:00
cmd-confirm-before.c It is silly for cmd_list_parse to return an integer error when it could 2017-01-15 22:00:56 +00:00
cmd-copy-mode.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-detach-client.c Add -E to detach-client to exec a command to replace the client instead 2017-01-13 10:12:12 +00:00
cmd-display-message.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-display-panes.c Move the client identify (display-panes) code into server-client.c. 2017-03-09 17:06:35 +00:00
cmd-find-window.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-find.c Try again to resolve problems with mistaking sessions for windows: now 2017-04-05 11:04:48 +00:00
cmd-has-session.c Instead of setting up the default keys by building the key struct 2014-10-20 22:29:25 +00:00
cmd-if-shell.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
cmd-join-pane.c Use the notify name string instead of going via an enum and change 2016-10-16 22:06:40 +00:00
cmd-kill-pane.c Redraw after killp -a. 2017-03-16 20:05:14 +00:00
cmd-kill-server.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-kill-session.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-kill-window.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-list-buffers.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-list-clients.c Give each client a name. This defaults to the tty name as before but 2017-04-05 10:49:46 +00:00
cmd-list-keys.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-list-panes.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-list-sessions.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-list-windows.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-list.c I no longer use my SourceForge address so replace it. 2016-01-19 15:59:12 +00:00
cmd-load-buffer.c Make source-file look for files relative to the client working directory 2017-02-14 18:13:05 +00:00
cmd-lock-server.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-move-window.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-new-session.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
cmd-new-window.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
cmd-paste-buffer.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-pipe-pane.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-queue.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
cmd-refresh-client.c Minor tidying in a couple of commands. 2017-01-10 19:45:55 +00:00
cmd-rename-session.c Don't error if renaming a session to its current name, from shik dot 2016-11-16 11:41:17 +00:00
cmd-rename-window.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-resize-pane.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-respawn-pane.c Move server_fill_environ into environ.c and move some other common code 2017-03-09 17:02:38 +00:00
cmd-respawn-window.c Move server_fill_environ into environ.c and move some other common code 2017-03-09 17:02:38 +00:00
cmd-rotate-window.c rotate-window needs to unzoom, problem reported by Sean Haugh. 2016-11-14 16:27:12 +00:00
cmd-run-shell.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
cmd-save-buffer.c Make source-file look for files relative to the client working directory 2017-02-14 18:13:05 +00:00
cmd-select-layout.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-select-pane.c The target validity check used window_pane_visible but that may be false 2016-11-16 00:24:03 +00:00
cmd-select-window.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-send-keys.c Add support for the OSC 4 and OSC 104 palette setting escape sequences, 2017-01-07 15:28:13 +00:00
cmd-send-prefix.c Make command exec functions return an enum rather than -1/0/1 values and 2012-07-11 07:10:15 +00:00
cmd-set-buffer.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-set-environment.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-set-hook.c It is silly for cmd_list_parse to return an integer error when it could 2017-01-15 22:00:56 +00:00
cmd-set-option.c Style nits. 2017-02-16 10:53:25 +00:00
cmd-show-buffer.c Make command exec functions return an enum rather than -1/0/1 values and 2012-07-11 07:10:15 +00:00
cmd-show-environment.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-show-messages.c Fix a couple of argument types. 2017-03-17 14:51:41 +00:00
cmd-show-options.c When a flag option is used in a format, it should use the number form 2017-01-30 21:41:17 +00:00
cmd-source-file.c Make source-file look for files relative to the client working directory 2017-02-14 18:13:05 +00:00
cmd-split-window.c Move server_fill_environ into environ.c and move some other common code 2017-03-09 17:02:38 +00:00
cmd-string.c Add support for custom command aliases, this is an array option which 2017-01-24 19:53:37 +00:00
cmd-swap-pane.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-swap-window.c Instead of numbering session groups, give them a name which may be given 2017-02-09 15:04:53 +00:00
cmd-switch-client.c Cancel key table when switching session, unless the key is going to 2017-02-06 15:00:41 +00:00
cmd-unbind-key.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd-wait-for.c Mass rename struct cmd_q to struct cmdq_item and related. 2016-10-16 19:04:05 +00:00
cmd.c server-info can become an alias rather than a command. 2017-01-24 19:59:19 +00:00
colour.c Show count of search results in copy mode. 2017-03-24 07:14:27 +00:00
control-notify.c Add a helper function for the most common format_create/defaults/expand 2017-03-08 13:36:12 +00:00
control.c It is silly for cmd_list_parse to return an integer error when it could 2017-01-15 22:00:56 +00:00
environ.c Move server_fill_environ into environ.c and move some other common code 2017-03-09 17:02:38 +00:00
format.c Add a format for number of bytes writtent to client, useful for debugging. 2017-04-18 15:44:17 +00:00
grid-view.c Handle insert cells when cursor at edge of screen correctly, and do a 2017-02-16 12:43:08 +00:00
grid.c Add support for the strikethrough attribute (SGR 9), using the new smxx 2017-03-22 07:16:54 +00:00
hooks.c Provide a way for hooks to tag formats onto the commands they fire so 2016-10-16 19:36:37 +00:00
input-keys.c Implement "all event" (1003) mouse mode but in a way that works. The 2017-02-01 09:55:07 +00:00
input.c Add support for the strikethrough attribute (SGR 9), using the new smxx 2017-03-22 07:16:54 +00:00
job.c Move server_fill_environ into environ.c and move some other common code 2017-03-09 17:02:38 +00:00
key-bindings.c Add Home and End for copy mode. 2017-04-05 12:14:18 +00:00
key-string.c Minor bits: fix an array size, add comment, make grid_cell_entry static. 2017-02-22 09:01:32 +00:00
layout-custom.c Use the notify name string instead of going via an enum and change 2016-10-16 22:06:40 +00:00
layout-set.c Some other stuff that can be local to one file. 2016-10-11 13:45:47 +00:00
layout.c Fix calculation of size for full size splits. 2017-03-11 15:16:35 +00:00
log.c Missing va_end, from Anton Lindqvist. 2017-02-04 23:42:53 +00:00
mode-key.c Drop the edit mode key tables and just use fixed key bindings for the 2016-10-12 14:50:14 +00:00
names.c Add a window or pane id "tag" to each format tree and use it to separate 2017-02-03 11:57:27 +00:00
notify.c Some tidying and tweaks to options code. 2017-01-11 14:56:44 +00:00
options-table.c Make update-environment an array as well. 2017-01-24 20:15:32 +00:00
options.c Handle empty options correctly. 2017-03-08 14:43:40 +00:00
paste.c Shorten a long line, and don't leak buffer in paste_add if size is zero. 2017-01-24 13:28:33 +00:00
proc.c I no longer use my SourceForge address so replace it. 2016-01-19 15:59:12 +00:00
procname.c Loads more static, except for cmd-*.c and window-*.c. 2016-10-10 21:29:23 +00:00
pty.c Add support for custom command aliases, this is an array option which 2017-01-24 19:53:37 +00:00
resize.c Improve some of the logging on resize. 2017-02-08 13:53:32 +00:00
screen-redraw.c Give each client a name. This defaults to the tty name as before but 2017-04-05 10:49:46 +00:00
screen-write.c Need to flush before writing out cells we are not collecting, also add 2017-03-07 13:48:28 +00:00
screen.c Collect sequences of printable ASCII characters and process them 2017-02-08 16:45:18 +00:00
server-client.c On terminals without DECSLRM, when a pane that is less than the full 2017-04-18 20:37:49 +00:00
server-fn.c Remove a couple of redraw flags that no longer have any effect. 2017-04-17 06:40:32 +00:00
server.c Instead of numbering session groups, give them a name which may be given 2017-02-09 15:04:53 +00:00
session.c Move server_fill_environ into environ.c and move some other common code 2017-03-09 17:02:38 +00:00
signal.c Loads more static, except for cmd-*.c and window-*.c. 2016-10-10 21:29:23 +00:00
status.c Break the message storage function into its own function, useful for 2017-02-09 12:09:33 +00:00
style.c Add support for the strikethrough attribute (SGR 9), using the new smxx 2017-03-22 07:16:54 +00:00
tmux.1 Add a format for number of bytes writtent to client, useful for debugging. 2017-04-18 15:44:17 +00:00
tmux.c Memory leak, from David CARLIER. 2017-04-16 20:33:46 +00:00
tmux.h Detect iTerm2 and use DECSLRM for it as well. 2017-04-18 18:21:37 +00:00
tty-acs.c Remove some dead code in cmd-move-window.c and make a load of local 2016-10-03 22:52:11 +00:00
tty-keys.c Detect iTerm2 and use DECSLRM for it as well. 2017-04-18 18:21:37 +00:00
tty-term.c Add support for the strikethrough attribute (SGR 9), using the new smxx 2017-03-22 07:16:54 +00:00
tty.c Detect iTerm2 and use DECSLRM for it as well. 2017-04-18 18:21:37 +00:00
utf8.c Fix a couple of argument types. 2017-03-17 14:51:41 +00:00
window-choose.c Add h and l for collapse and expand in choose mode with vi(1) keys, from 2017-03-17 14:41:54 +00:00
window-clock.c Add support for the OSC 4 and OSC 104 palette setting escape sequences, 2017-01-07 15:28:13 +00:00
window-copy.c Show count of search results in copy mode. 2017-03-24 07:14:27 +00:00
window.c Fix pane movement by direction (up, down, left, right) when 2017-03-21 09:49:10 +00:00
xmalloc.c Key running commands for #() by the unexpanded command, and run them 2016-11-17 10:06:08 +00:00
xmalloc.h Key running commands for #() by the unexpanded command, and run them 2016-11-17 10:06:08 +00:00
xterm-keys.c Revert previous for now, it will break TERM=screen. 2017-01-25 14:36:08 +00:00