From 05d60c4812f1981f2d03991e33ed54aa2cca3ed6 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Thu, 5 Mar 2015 12:19:36 -0300 Subject: ui: Schedule screen refreshs to run in the event loop This is required to avoid event loop recursion due to indirect calls to os_breakcheck by screenalloc --- src/nvim/ui.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/nvim/ui.c b/src/nvim/ui.c index 443b50da87..e22ef6692d 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -23,6 +23,7 @@ #include "nvim/normal.h" #include "nvim/option.h" #include "nvim/os_unix.h" +#include "nvim/os/event.h" #include "nvim/os/time.h" #include "nvim/os/input.h" #include "nvim/os/signal.h" @@ -208,10 +209,8 @@ void ui_detach(UI *ui) } ui_count--; - - if (ui_count) { - ui_refresh(); - } + // schedule a refresh + event_push((Event) { .handler = refresh }, false); } void ui_clear(void) @@ -486,3 +485,10 @@ static void ui_change_mode(void) conceal_check_cursur_line(); } +static void refresh(Event event) +{ + if (ui_count) { + ui_refresh(); + } +} + -- cgit