summaryrefslogtreecommitdiffstats
path: root/tty.c
diff options
context:
space:
mode:
authornicm <nicm>2021-12-10 12:42:37 +0000
committernicm <nicm>2021-12-10 12:42:37 +0000
commitdb3aabcc34464940c286d7ce3abc8f3edc94b7bc (patch)
treea8ddf220a49c787f87c469205387a21c5e0eeee9 /tty.c
parentd721fb2a9fd70c157abb8540d4c50fca654f9f4d (diff)
Add a NOBLOCK flag rather than adding amount to wait for when
dealing with potentially-long sequences. GitHub issue 3001.
Diffstat (limited to 'tty.c')
-rw-r--r--tty.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/tty.c b/tty.c
index a9678eaf..3aefe784 100644
--- a/tty.c
+++ b/tty.c
@@ -206,6 +206,11 @@ tty_block_maybe(struct tty *tty)
size_t size = EVBUFFER_LENGTH(tty->out);
struct timeval tv = { .tv_usec = TTY_BLOCK_INTERVAL };
+ if (size == 0)
+ tty->flags &= ~TTY_NOBLOCK;
+ else if (tty->flags & TTY_NOBLOCK)
+ return (0);
+
if (size < TTY_BLOCK_START(tty))
return (0);
@@ -2088,8 +2093,8 @@ tty_set_selection(struct tty *tty, const char *buf, size_t len)
encoded = xmalloc(size);
b64_ntop(buf, len, encoded, size);
+ tty->flags |= TTY_NOBLOCK;
tty_putcode_ptr2(tty, TTYC_MS, "", encoded);
- tty->client->redraw = EVBUFFER_LENGTH(tty->out);
free(encoded);
}
@@ -2097,6 +2102,7 @@ tty_set_selection(struct tty *tty, const char *buf, size_t len)
void
tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
{
+ tty->flags |= TTY_NOBLOCK;
tty_add(tty, ctx->ptr, ctx->num);
tty_invalidate(tty);
}