From 0e8710f507acda408e3daf1ad71b33997e126505 Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 9 Apr 2020 12:16:16 +0000 Subject: Wait until the initial command sequence is done before sending a device attributes request and other bits that prompt a reply from the terminal. This means that stray relies are not left on the terminal if the command has attached and then immediately detached and tmux will not be around to receive them. Prompted by a problem report from espie@. --- tty.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'tty.c') diff --git a/tty.c b/tty.c index 46ab1283..a7607cba 100644 --- a/tty.c +++ b/tty.c @@ -340,12 +340,7 @@ tty_start_tty(struct tty *tty) tty->flags |= TTY_FOCUS; tty_puts(tty, "\033[?1004h"); } - if (~tty->flags & TTY_HAVEDA) - tty_puts(tty, "\033[c"); - if (~tty->flags & TTY_HAVEDSR) - tty_puts(tty, "\033[1337n"); - } else - tty->flags |= (TTY_HAVEDA|TTY_HAVEDSR); + } evtimer_set(&tty->start_timer, tty_start_timer_callback, tty); evtimer_add(&tty->start_timer, &tv); @@ -361,6 +356,21 @@ tty_start_tty(struct tty *tty) tty->mouse_drag_release = NULL; } +void +tty_send_requests(struct tty *tty) +{ + if (~tty->flags & TTY_STARTED) + return; + + if (tty_term_flag(tty->term, TTYC_XT)) { + if (~tty->flags & TTY_HAVEDA) + tty_puts(tty, "\033[c"); + if (~tty->flags & TTY_HAVEDSR) + tty_puts(tty, "\033[1337n"); + } else + tty->flags |= (TTY_HAVEDA|TTY_HAVEDSR); +} + void tty_stop_tty(struct tty *tty) { -- cgit