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
This commit is contained in:
Thiago de Arruda 2015-03-05 12:19:36 -03:00
parent 51c69b89a7
commit 05d60c4812

View File

@ -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();
}
}