diff options
author | nicm <nicm> | 2015-05-12 22:40:38 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-05-12 22:40:38 +0000 |
commit | 3f4ee98162cd5bb7000f93fec0e631e123b1281d (patch) | |
tree | 07d42ed7718f737c364d5afc9d825a4e553c81d7 /tty.c | |
parent | 37ae8a9e0fc2cd7ab2387a9a762a39dc0ff6723c (diff) | |
download | rtmux-3f4ee98162cd5bb7000f93fec0e631e123b1281d.tar.gz rtmux-3f4ee98162cd5bb7000f93fec0e631e123b1281d.tar.bz2 rtmux-3f4ee98162cd5bb7000f93fec0e631e123b1281d.zip |
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.
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 26 |
1 files changed, 17 insertions, 9 deletions
@@ -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; |