mirror of
https://github.com/tmux/tmux.git
synced 2025-03-25 15:28:49 +00:00
Add a NOBLOCK flag rather than adding amount to wait for when
dealing with potentially-long sequences. GitHub issue 3001.
This commit is contained in:
parent
d721fb2a9f
commit
db3aabcc34
2
tmux.h
2
tmux.h
@ -1311,7 +1311,7 @@ struct tty {
|
|||||||
#define TTY_NOCURSOR 0x1
|
#define TTY_NOCURSOR 0x1
|
||||||
#define TTY_FREEZE 0x2
|
#define TTY_FREEZE 0x2
|
||||||
#define TTY_TIMER 0x4
|
#define TTY_TIMER 0x4
|
||||||
/* 0x8 unused */
|
#define TTY_NOBLOCK 0x8
|
||||||
#define TTY_STARTED 0x10
|
#define TTY_STARTED 0x10
|
||||||
#define TTY_OPENED 0x20
|
#define TTY_OPENED 0x20
|
||||||
/* 0x40 unused */
|
/* 0x40 unused */
|
||||||
|
8
tty.c
8
tty.c
@ -206,6 +206,11 @@ tty_block_maybe(struct tty *tty)
|
|||||||
size_t size = EVBUFFER_LENGTH(tty->out);
|
size_t size = EVBUFFER_LENGTH(tty->out);
|
||||||
struct timeval tv = { .tv_usec = TTY_BLOCK_INTERVAL };
|
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))
|
if (size < TTY_BLOCK_START(tty))
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
@ -2088,8 +2093,8 @@ tty_set_selection(struct tty *tty, const char *buf, size_t len)
|
|||||||
encoded = xmalloc(size);
|
encoded = xmalloc(size);
|
||||||
|
|
||||||
b64_ntop(buf, len, encoded, size);
|
b64_ntop(buf, len, encoded, size);
|
||||||
|
tty->flags |= TTY_NOBLOCK;
|
||||||
tty_putcode_ptr2(tty, TTYC_MS, "", encoded);
|
tty_putcode_ptr2(tty, TTYC_MS, "", encoded);
|
||||||
tty->client->redraw = EVBUFFER_LENGTH(tty->out);
|
|
||||||
|
|
||||||
free(encoded);
|
free(encoded);
|
||||||
}
|
}
|
||||||
@ -2097,6 +2102,7 @@ tty_set_selection(struct tty *tty, const char *buf, size_t len)
|
|||||||
void
|
void
|
||||||
tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
|
tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
|
||||||
{
|
{
|
||||||
|
tty->flags |= TTY_NOBLOCK;
|
||||||
tty_add(tty, ctx->ptr, ctx->num);
|
tty_add(tty, ctx->ptr, ctx->num);
|
||||||
tty_invalidate(tty);
|
tty_invalidate(tty);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user