mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
Merge pull request #9218 from bfredl/termbuf
channel: avoid buffering output when only terminal and no callbacks are active
This commit is contained in:
@@ -607,12 +607,15 @@ static void on_channel_output(Stream *stream, Channel *chan, RBuffer *buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rbuffer_consumed(buf, count);
|
rbuffer_consumed(buf, count);
|
||||||
// if buffer wasn't consumed, a pending callback is stalled. Aggregate the
|
|
||||||
// received data and avoid a "burst" of multiple callbacks.
|
if (callback_reader_set(*reader) || reader->buffered) {
|
||||||
bool buffer_set = reader->buffer.ga_len > 0;
|
// if buffer wasn't consumed, a pending callback is stalled. Aggregate the
|
||||||
ga_concat_len(&reader->buffer, ptr, count);
|
// received data and avoid a "burst" of multiple callbacks.
|
||||||
if (!reader->buffered && !buffer_set && callback_reader_set(*reader)) {
|
bool buffer_set = reader->buffer.ga_len > 0;
|
||||||
process_channel_event(chan, &reader->cb, type, reader, 0);
|
ga_concat_len(&reader->buffer, ptr, count);
|
||||||
|
if (callback_reader_set(*reader) && !reader->buffered && !buffer_set) {
|
||||||
|
process_channel_event(chan, &reader->cb, type, reader, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user