diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-06-29 22:49:37 +0200 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-07-19 12:38:37 +0200 |
commit | 0b63f5afad852d077bb430ad9c9ba4301980d500 (patch) | |
tree | 158a26cbf426bdee345a52d9b27c78b8b9cf5681 /src/nvim/msgpack_rpc/channel.c | |
parent | be3d2f512528f8a99acc262ead8b88d38153759d (diff) | |
download | rneovim-0b63f5afad852d077bb430ad9c9ba4301980d500.tar.gz rneovim-0b63f5afad852d077bb430ad9c9ba4301980d500.tar.bz2 rneovim-0b63f5afad852d077bb430ad9c9ba4301980d500.zip |
perf(ui): unpack grid_line (screen contents) directly
Diffstat (limited to 'src/nvim/msgpack_rpc/channel.c')
-rw-r--r-- | src/nvim/msgpack_rpc/channel.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c index 0bb5d800f1..1ca68979f4 100644 --- a/src/nvim/msgpack_rpc/channel.c +++ b/src/nvim/msgpack_rpc/channel.c @@ -239,11 +239,13 @@ static void parse_msgpack(Channel *channel) { Unpacker *p = channel->rpc.unpacker; while (unpacker_advance(p)) { - if (p->is_ui) { - if (p->ui_handler.fn != NULL && p->result.type == kObjectTypeArray) { + if (p->type == kMessageTypeRedrawEvent) { + if (p->grid_line_event) { + ui_client_event_raw_line(p->grid_line_event); + } else if (p->ui_handler.fn != NULL && p->result.type == kObjectTypeArray) { p->ui_handler.fn(p->result.data.array); + arena_mem_free(arena_finish(&p->arena), &p->reuse_blk); } - arena_mem_free(arena_finish(&p->arena), &p->reuse_blk); } else if (p->type == kMessageTypeResponse) { ChannelCallFrame *frame = kv_last(channel->rpc.call_stack); if (p->request_id != frame->request_id) { |