mirror of
https://github.com/tmate-io/tmate-ssh-server.git
synced 2020-11-18 19:53:51 -08:00
Reset attributes as well as scroll region before poll(2) and add a big comment
explaining why.
This commit is contained in:
parent
5cf994856f
commit
e7cd547457
12
server.c
12
server.c
@ -879,7 +879,16 @@ server_handle_client(struct client *c)
|
|||||||
wp = c->session->curw->window->active; /* could die - do each loop */
|
wp = c->session->curw->window->active; /* could die - do each loop */
|
||||||
s = wp->screen;
|
s = wp->screen;
|
||||||
|
|
||||||
/* Ensure cursor position and mode settings. */
|
/*
|
||||||
|
* Update cursor position and mode settings. The scroll region and
|
||||||
|
* attributes are cleared across poll(2) as this is the most likely
|
||||||
|
* time a user may interrupt tmux, for example with ~^Z in ssh(1). This
|
||||||
|
* is a compromise between excessive resets and likelihood of an
|
||||||
|
* interrupt.
|
||||||
|
*
|
||||||
|
* tty_region/tty_reset/tty_update_mode already take care of not
|
||||||
|
* resetting things that are already in their default state.
|
||||||
|
*/
|
||||||
status = options_get_number(&c->session->options, "status");
|
status = options_get_number(&c->session->options, "status");
|
||||||
tty_region(&c->tty, 0, c->tty.sy - 1, 0);
|
tty_region(&c->tty, 0, c->tty.sy - 1, 0);
|
||||||
if (!window_pane_visible(wp) || wp->yoff + s->cy >= c->tty.sy - status)
|
if (!window_pane_visible(wp) || wp->yoff + s->cy >= c->tty.sy - status)
|
||||||
@ -891,6 +900,7 @@ server_handle_client(struct client *c)
|
|||||||
if (server_locked)
|
if (server_locked)
|
||||||
mode &= ~TTY_NOCURSOR;
|
mode &= ~TTY_NOCURSOR;
|
||||||
tty_update_mode(&c->tty, mode);
|
tty_update_mode(&c->tty, mode);
|
||||||
|
tty_reset(&c->tty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Lost a client. */
|
/* Lost a client. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user