Add support for the iTerm2 sychronized updates escape sequence which

drastically reduces flickering.
This commit is contained in:
nicm
2020-04-16 13:35:24 +00:00
parent a2e47b5279
commit b2443aa2f9
7 changed files with 56 additions and 2 deletions

26
tty.c
View File

@ -1426,6 +1426,20 @@ tty_draw_line(struct tty *tty, struct window_pane *wp, struct screen *s,
tty_update_mode(tty, tty->mode, s);
}
void
tty_sync_start(struct tty *tty)
{
if ((tty->term->flags|tty->term_flags) & TERM_SYNC)
tty_puts(tty, "\033P=1s\033\\");
}
void
tty_sync_end(struct tty *tty)
{
if ((tty->term->flags|tty->term_flags) & TERM_SYNC)
tty_puts(tty, "\033P=2s\033\\");
}
static int
tty_client_ready(struct client *c, struct window_pane *wp)
{
@ -1919,6 +1933,18 @@ tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
tty_invalidate(tty);
}
void
tty_cmd_syncstart(struct tty *tty, __unused const struct tty_ctx *ctx)
{
tty_sync_start(tty);
}
void
tty_cmd_syncend(struct tty *tty, __unused const struct tty_ctx *ctx)
{
tty_sync_end(tty);
}
static void
tty_cell(struct tty *tty, const struct grid_cell *gc, struct window_pane *wp)
{