mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 13:33:27 +00:00
Support code for control mode flow control: allow clients to have
separate offsets (used and acknowleged) into the pane buffers; turn off reading from panes when no clients can accept the data; and add a -A flag to refresh-client to let clients turn receiving a pane on and off.
This commit is contained in:
@ -26,40 +26,6 @@
|
||||
#define CONTROL_SHOULD_NOTIFY_CLIENT(c) \
|
||||
((c) != NULL && ((c)->flags & CLIENT_CONTROL))
|
||||
|
||||
void
|
||||
control_notify_input(struct client *c, struct window_pane *wp,
|
||||
const u_char *buf, size_t len)
|
||||
{
|
||||
struct evbuffer *message;
|
||||
u_int i;
|
||||
|
||||
if (c->session == NULL)
|
||||
return;
|
||||
|
||||
if (c->flags & CLIENT_CONTROL_NOOUTPUT)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Only write input if the window pane is linked to a window belonging
|
||||
* to the client's session.
|
||||
*/
|
||||
if (winlink_find_by_window(&c->session->windows, wp->window) != NULL) {
|
||||
message = evbuffer_new();
|
||||
if (message == NULL)
|
||||
fatalx("out of memory");
|
||||
evbuffer_add_printf(message, "%%output %%%u ", wp->id);
|
||||
for (i = 0; i < len; i++) {
|
||||
if (buf[i] < ' ' || buf[i] == '\\')
|
||||
evbuffer_add_printf(message, "\\%03o", buf[i]);
|
||||
else
|
||||
evbuffer_add_printf(message, "%c", buf[i]);
|
||||
}
|
||||
evbuffer_add(message, "", 1);
|
||||
control_write(c, "%s", EVBUFFER_DATA(message));
|
||||
evbuffer_free(message);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
control_notify_pane_mode_changed(int pane)
|
||||
{
|
||||
|
Reference in New Issue
Block a user