mirror of
https://github.com/neovim/neovim.git
synced 2025-10-06 01:46:29 +00:00
fix(f_wait): flush UI before blocking (#25962)
This commit is contained in:
@@ -2911,6 +2911,9 @@ static void f_wait(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
bool error = false;
|
||||
const int called_emsg_before = called_emsg;
|
||||
|
||||
// Flush screen updates before blocking.
|
||||
ui_flush();
|
||||
|
||||
LOOP_PROCESS_EVENTS_UNTIL(&main_loop, main_loop.events, timeout,
|
||||
eval_expr_typval(&expr, false, &argv, 0, &exprval) != OK
|
||||
|| tv_get_number_chk(&exprval, &error)
|
||||
|
@@ -1723,7 +1723,7 @@ static void getchar_common(typval_T *argvars, typval_T *rettv)
|
||||
// getchar(): blocking wait.
|
||||
// TODO(bfredl): deduplicate shared logic with state_enter ?
|
||||
if (!char_avail()) {
|
||||
// flush output before waiting
|
||||
// Flush screen updates before blocking.
|
||||
ui_flush();
|
||||
(void)os_inchar(NULL, 0, -1, typebuf.tb_change_cnt, main_loop.events);
|
||||
if (!multiqueue_empty(main_loop.events)) {
|
||||
|
@@ -463,7 +463,7 @@ static int nlua_wait(lua_State *lstate)
|
||||
int pcall_status = 0;
|
||||
bool callback_result = false;
|
||||
|
||||
// Flush UI before blocking
|
||||
// Flush screen updates before blocking.
|
||||
ui_flush();
|
||||
|
||||
LOOP_PROCESS_EVENTS_UNTIL(&main_loop,
|
||||
|
@@ -70,7 +70,7 @@ getkey:
|
||||
update_screen();
|
||||
setcursor(); // put cursor back where it belongs
|
||||
}
|
||||
// Flush screen updates before blocking
|
||||
// Flush screen updates before blocking.
|
||||
ui_flush();
|
||||
// Call `os_inchar` directly to block for events or user input without
|
||||
// consuming anything from `input_buffer`(os/input.c) or calling the
|
||||
|
Reference in New Issue
Block a user