mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
Do not use evbuffer_add_buffer because it is destructive and doesn't
work in newer libevent.
This commit is contained in:
25
input.c
25
input.c
@ -873,19 +873,28 @@ input_set_state(struct window_pane *wp, const struct input_transition *itr)
|
||||
/* Parse input. */
|
||||
void
|
||||
input_parse(struct window_pane *wp)
|
||||
{
|
||||
struct evbuffer *evb = wp->event->input;
|
||||
|
||||
input_parse_buffer(wp, EVBUFFER_DATA(evb), EVBUFFER_LENGTH(evb));
|
||||
evbuffer_drain(evb, EVBUFFER_LENGTH(evb));
|
||||
}
|
||||
|
||||
/* Parse given input. */
|
||||
void
|
||||
input_parse_buffer(struct window_pane *wp, u_char *buf, size_t len)
|
||||
{
|
||||
struct input_ctx *ictx = wp->ictx;
|
||||
struct screen_write_ctx *sctx = &ictx->ctx;
|
||||
const struct input_transition *itr;
|
||||
struct evbuffer *evb = wp->event->input;
|
||||
u_char *buf;
|
||||
size_t len, off;
|
||||
size_t off = 0;
|
||||
|
||||
if (EVBUFFER_LENGTH(evb) == 0)
|
||||
if (len == 0)
|
||||
return;
|
||||
|
||||
window_update_activity(wp->window);
|
||||
wp->flags |= PANE_CHANGED;
|
||||
notify_input(wp, buf, len);
|
||||
|
||||
/*
|
||||
* Open the screen. Use NULL wp if there is a mode set as don't want to
|
||||
@ -897,12 +906,6 @@ input_parse(struct window_pane *wp)
|
||||
screen_write_start(sctx, NULL, &wp->base);
|
||||
ictx->wp = wp;
|
||||
|
||||
buf = EVBUFFER_DATA(evb);
|
||||
len = EVBUFFER_LENGTH(evb);
|
||||
off = 0;
|
||||
|
||||
notify_input(wp, evb);
|
||||
|
||||
log_debug("%s: %%%u %s, %zu bytes: %.*s", __func__, wp->id,
|
||||
ictx->state->name, len, (int)len, buf);
|
||||
|
||||
@ -950,8 +953,6 @@ input_parse(struct window_pane *wp)
|
||||
|
||||
/* Close the screen. */
|
||||
screen_write_stop(sctx);
|
||||
|
||||
evbuffer_drain(evb, len);
|
||||
}
|
||||
|
||||
/* Split the parameter list (if any). */
|
||||
|
Reference in New Issue
Block a user