mirror of
https://github.com/tmate-io/tmate.git
synced 2026-01-23 02:24:06 +00:00
To replace c0-*, add a high watermark to the pty event, and also backoff
when the any of the ttys the pane is going to write to has buffered enough data.
This commit is contained in:
parent
37ae8a9e0f
commit
3f4ee98162
3 changed files with 79 additions and 19 deletions
26
tty.c
26
tty.c
|
|
@ -723,9 +723,23 @@ tty_draw_line(struct tty *tty, const struct window_pane *wp,
|
|||
tty_update_mode(tty, tty->mode, s);
|
||||
}
|
||||
|
||||
int
|
||||
tty_client_ready(struct client *c, struct window_pane *wp)
|
||||
{
|
||||
if (c->session == NULL || c->tty.term == NULL)
|
||||
return (0);
|
||||
if (c->flags & CLIENT_SUSPENDED)
|
||||
return (0);
|
||||
if (c->tty.flags & TTY_FREEZE)
|
||||
return (0);
|
||||
if (c->session->curw->window != wp->window)
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
tty_write(
|
||||
void (*cmdfn)(struct tty *, const struct tty_ctx *), struct tty_ctx *ctx)
|
||||
tty_write(void (*cmdfn)(struct tty *, const struct tty_ctx *),
|
||||
struct tty_ctx *ctx)
|
||||
{
|
||||
struct window_pane *wp = ctx->wp;
|
||||
struct client *c;
|
||||
|
|
@ -740,13 +754,7 @@ tty_write(
|
|||
return;
|
||||
|
||||
TAILQ_FOREACH(c, &clients, entry) {
|
||||
if (c->session == NULL || c->tty.term == NULL)
|
||||
continue;
|
||||
if (c->flags & CLIENT_SUSPENDED)
|
||||
continue;
|
||||
if (c->tty.flags & TTY_FREEZE)
|
||||
continue;
|
||||
if (c->session->curw->window != wp->window)
|
||||
if (!tty_client_ready(c, wp))
|
||||
continue;
|
||||
|
||||
ctx->xoff = wp->xoff;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue