aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-06-26 21:43:57 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-06-26 21:49:29 -0400
commit2b400daca38b69e9d1dc76d97fa9391e2764b400 (patch)
tree7e982f696d1371ec48ae6bdb28394a8f23791165
parent58cf81914da3fbcc875cbd4954b62a314be31c9a (diff)
downloadrneovim-2b400daca38b69e9d1dc76d97fa9391e2764b400.tar.gz
rneovim-2b400daca38b69e9d1dc76d97fa9391e2764b400.tar.bz2
rneovim-2b400daca38b69e9d1dc76d97fa9391e2764b400.zip
vim-patch:8.0.1100: stuck in redraw loop when 'lazyredraw' is set
Problem: Stuck in redraw loop when 'lazyredraw' is set. Solution: Don't loop on update_screen() when not redrawing. (Yasuhiro Matsumoto, closes vim/vim#2082) https://github.com/vim/vim/commit/072412ed45aa20a67aaa7e387d7f6bf59c7d3fbe
-rw-r--r--src/nvim/screen.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index d141520fef..19dff0a0f0 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -269,14 +269,14 @@ void update_curbuf(int type)
/// and redraw_all_later() to mark parts of the screen as needing a redraw.
///
/// @param type set to a NOT_VALID to force redraw of entire screen
-void update_screen(int type)
+int update_screen(int type)
{
static int did_intro = FALSE;
int did_one;
// Don't do anything if the screen structures are (not yet) valid.
if (!default_grid.chars) {
- return;
+ return FAIL;
}
if (must_redraw) {
@@ -299,9 +299,10 @@ void update_screen(int type)
if (!redrawing() || updating_screen) {
redraw_later(type); /* remember type for next time */
must_redraw = type;
- if (type > INVERTED_ALL)
- curwin->w_lines_valid = 0; /* don't use w_lines[].wl_size now */
- return;
+ if (type > INVERTED_ALL) {
+ curwin->w_lines_valid = 0; // don't use w_lines[].wl_size now
+ }
+ return FAIL;
}
updating_screen = TRUE;
@@ -511,6 +512,7 @@ void update_screen(int type)
// either cmdline is cleared, not drawn or mode is last drawn
cmdline_was_last_drawn = false;
+ return OK;
}
/*