Set mode properly before and after redrawing, and don't bother

calculating cursor position if it won't be used.
pull/2195/head
nicm 2020-04-17 22:16:28 +00:00
parent a877a5d8c9
commit a7a9460d27
2 changed files with 8 additions and 3 deletions

View File

@ -1681,7 +1681,7 @@ server_client_check_redraw(struct client *c)
struct session *s = c->session;
struct tty *tty = &c->tty;
struct window_pane *wp;
int needed, flags;
int needed, flags, mode = tty->mode;
struct timeval tv = { .tv_usec = 1000 };
static struct event ev;
size_t left;
@ -1732,6 +1732,7 @@ server_client_check_redraw(struct client *c)
flags = tty->flags & (TTY_BLOCK|TTY_FREEZE|TTY_NOCURSOR);
tty->flags = (tty->flags & ~(TTY_BLOCK|TTY_FREEZE)) | TTY_NOCURSOR;
tty_update_mode(tty, mode, NULL);
if (~c->flags & CLIENT_REDRAWWINDOW) {
/*
@ -1752,8 +1753,9 @@ server_client_check_redraw(struct client *c)
screen_redraw_screen(c);
}
tty->flags = (tty->flags & ~(TTY_FREEZE|TTY_NOCURSOR)) | flags;
tty_update_mode(tty, tty->mode, NULL);
tty->flags = (tty->flags & ~TTY_NOCURSOR) | (flags & TTY_NOCURSOR);
tty_update_mode(tty, mode, NULL);
tty->flags = (tty->flags & ~(TTY_BLOCK|TTY_FREEZE|TTY_NOCURSOR)) | flags;
c->flags &= ~(CLIENT_ALLREDRAWFLAGS|CLIENT_STATUSFORCE);

3
tty.c
View File

@ -2151,6 +2151,9 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy)
u_int thisx, thisy;
int change;
if (tty->flags & TTY_BLOCK)
return;
if (cx > tty->sx - 1)
cx = tty->sx - 1;