mirror of
https://github.com/tmux/tmux.git
synced 2024-12-12 17:38:48 +00:00
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@.
This commit is contained in:
parent
ff135b34a4
commit
0e8710f507
@ -1898,6 +1898,8 @@ server_client_command_done(struct cmdq_item *item, __unused void *data)
|
||||
|
||||
if (~c->flags & CLIENT_ATTACHED)
|
||||
c->flags |= CLIENT_EXIT;
|
||||
else if (~c->flags & CLIENT_DETACHING)
|
||||
tty_send_requests(&c->tty);
|
||||
return (CMD_RETURN_NORMAL);
|
||||
}
|
||||
|
||||
|
1
tmux.h
1
tmux.h
@ -1995,6 +1995,7 @@ int tty_init(struct tty *, struct client *, int, char *);
|
||||
void tty_resize(struct tty *);
|
||||
void tty_set_size(struct tty *, u_int, u_int, u_int, u_int);
|
||||
void tty_start_tty(struct tty *);
|
||||
void tty_send_requests(struct tty *);
|
||||
void tty_stop_tty(struct tty *);
|
||||
void tty_set_title(struct tty *, const char *);
|
||||
void tty_update_mode(struct tty *, int, struct screen *);
|
||||
|
22
tty.c
22
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user