Mercurial > vim
comparison src/proto/channel.pro @ 12154:71e10b81226d v8.0.0957
patch 8.0.0957: a terminal job can deadlock when sending many keys
commit https://github.com/vim/vim/commit/97bd5e6527bf2b48acdd1550acba161e82a5bc99
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Aug 18 20:50:30 2017 +0200
patch 8.0.0957: a terminal job can deadlock when sending many keys
Problem: When term_sendkeys() sends many keys it may get stuck in writing
to the job.
Solution: Make the write non-blocking, buffer keys to be sent.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 18 Aug 2017 21:00:05 +0200 |
parents | 0a61213afdd2 |
children | 24abce52ad20 |
comparison
equal
deleted
inserted
replaced
12153:7264e03147e1 | 12154:71e10b81226d |
---|---|
33 void channel_free_all(void); | 33 void channel_free_all(void); |
34 char_u *channel_read_block(channel_T *channel, ch_part_T part, int timeout); | 34 char_u *channel_read_block(channel_T *channel, ch_part_T part, int timeout); |
35 void common_channel_read(typval_T *argvars, typval_T *rettv, int raw); | 35 void common_channel_read(typval_T *argvars, typval_T *rettv, int raw); |
36 channel_T *channel_fd2channel(sock_T fd, ch_part_T *partp); | 36 channel_T *channel_fd2channel(sock_T fd, ch_part_T *partp); |
37 void channel_handle_events(void); | 37 void channel_handle_events(void); |
38 void channel_set_nonblock(channel_T *channel, ch_part_T part); | |
38 int channel_send(channel_T *channel, ch_part_T part, char_u *buf, int len, char *fun); | 39 int channel_send(channel_T *channel, ch_part_T part, char_u *buf, int len, char *fun); |
39 void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval); | 40 void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval); |
40 void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval); | 41 void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval); |
41 int channel_poll_setup(int nfd_in, void *fds_in); | 42 int channel_poll_setup(int nfd_in, void *fds_in); |
42 int channel_poll_check(int ret_in, void *fds_in); | 43 int channel_poll_check(int ret_in, void *fds_in); |