Use global queue in order to catch read event from channel

This commit is contained in:
Kazuki Sakamoto
2016-08-17 22:49:57 -07:00
parent fa52c6497a
commit c617acfc46
+8 -2
View File
@@ -2260,13 +2260,19 @@ static int vimModMaskToEventModifierFlags(int mods)
void *
gui_macvim_add_channel(channel_T *channel, int part)
{
dispatch_queue_t q =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_source_t s =
dispatch_source_create(DISPATCH_SOURCE_TYPE_READ,
channel->ch_part[part].ch_fd,
0,
dispatch_get_main_queue());
q);
dispatch_source_set_event_handler(s, ^{
channel_read(channel, part, "gui_macvim_add_channel");
dispatch_suspend(s);
dispatch_async(dispatch_get_main_queue(), ^{
channel_read(channel, part, "gui_macvim_add_channel");
dispatch_resume(s);
});
});
dispatch_resume(s);
return s;