diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-09-23 12:31:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-23 12:31:05 +0200 |
commit | 3c53371b0ccbfa03260b5d58eef3994a656fc1a5 (patch) | |
tree | 560d4ad0ad3eee4490c2c937676f71f8df6e694b /src | |
parent | 7307096c5ef5f54e49f2f49fb049fe40f8417f7e (diff) | |
parent | b94891421af5b3e7ba9629baaa9b181e27b3ca2f (diff) | |
download | rneovim-3c53371b0ccbfa03260b5d58eef3994a656fc1a5.tar.gz rneovim-3c53371b0ccbfa03260b5d58eef3994a656fc1a5.tar.bz2 rneovim-3c53371b0ccbfa03260b5d58eef3994a656fc1a5.zip |
Merge #4972 from justinmk/schedule-ui_refresh
Schedule ui_refresh
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/tui/tui.c | 8 | ||||
-rw-r--r-- | src/nvim/ui.c | 24 |
2 files changed, 17 insertions, 15 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index bfc03dfb81..db06ffe94a 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -250,11 +250,6 @@ static void tui_scheduler(Event event, void *d) loop_schedule(data->loop, event); } -static void refresh_event(void **argv) -{ - ui_refresh(); -} - static void sigcont_cb(SignalWatcher *watcher, int signum, void *data) { ((TUIData *)data)->cont_received = true; @@ -265,8 +260,7 @@ static void sigwinch_cb(SignalWatcher *watcher, int signum, void *data) got_winch = true; UI *ui = data; update_size(ui); - // run refresh_event in nvim main loop - loop_schedule(&main_loop, event_create(1, refresh_event, 0)); + ui_schedule_refresh(); } static bool attrs_differ(HlAttrs a1, HlAttrs a2) diff --git a/src/nvim/ui.c b/src/nvim/ui.c index dd278893c2..b8d44cbcf8 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -53,12 +53,10 @@ static bool pending_cursor_update = false; static int busy = 0; static int height, width; -// This set of macros allow us to use UI_CALL to invoke any function on -// registered UI instances. The functions can have 0-5 arguments(configurable -// by SELECT_NTH) +// UI_CALL invokes a function on all registered UI instances. The functions can +// have 0-5 arguments (configurable by SELECT_NTH). // -// See http://stackoverflow.com/a/11172679 for a better explanation of how it -// works. +// See http://stackoverflow.com/a/11172679 for how it works. #ifdef _MSC_VER # define UI_CALL(funname, ...) \ do { \ @@ -169,8 +167,8 @@ void ui_refresh(void) for (size_t i = 0; i < ui_count; i++) { UI *ui = uis[i]; - width = ui->width < width ? ui->width : width; - height = ui->height < height ? ui->height : height; + width = MIN(ui->width, width); + height = MIN(ui->height, height); pum_external &= ui->pum_external; } @@ -179,6 +177,16 @@ void ui_refresh(void) pum_set_external(pum_external); } +static void ui_refresh_handler(void **argv) +{ + ui_refresh(); +} + +void ui_schedule_refresh(void) +{ + loop_schedule(&main_loop, event_create(1, ui_refresh_handler, 0)); +} + void ui_resize(int new_width, int new_height) { width = new_width; @@ -252,7 +260,7 @@ void ui_detach_impl(UI *ui) } if (--ui_count) { - ui_refresh(); + ui_schedule_refresh(); } } |