diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/tui/input.c | 10 | ||||
-rw-r--r-- | src/nvim/tui/input.h | 2 | ||||
-rw-r--r-- | src/nvim/tui/tui.c | 7 |
3 files changed, 9 insertions, 10 deletions
diff --git a/src/nvim/tui/input.c b/src/nvim/tui/input.c index 876f00e03e..844bc0db40 100644 --- a/src/nvim/tui/input.c +++ b/src/nvim/tui/input.c @@ -27,7 +27,7 @@ void tinput_init(TermInput *input, Loop *loop) input->loop = loop; input->paste = 0; input->in_fd = 0; - input->waiting_for_bg_response = false; + input->waiting_for_bg_response = 0; input->key_buffer = rbuffer_new(KEY_BUFFER_SIZE); uv_mutex_init(&input->key_buffer_mutex); uv_cond_init(&input->key_buffer_cond); @@ -444,7 +444,7 @@ static void set_bg_deferred(void **argv) // [1] https://en.wikipedia.org/wiki/Luma_%28video%29 static bool handle_background_color(TermInput *input) { - if (!input->waiting_for_bg_response) { + if (input->waiting_for_bg_response <= 0) { return false; } size_t count = 0; @@ -465,9 +465,13 @@ static bool handle_background_color(TermInput *input) header_size = 10; num_components = 4; } else { + input->waiting_for_bg_response--; + if (input->waiting_for_bg_response == 0) { + DLOG("did not get a response for terminal background query"); + } return false; } - input->waiting_for_bg_response = false; + input->waiting_for_bg_response = 0; rbuffer_consumed(input->read_stream.buffer, header_size); RBUFFER_EACH(input->read_stream.buffer, c, i) { count = i + 1; diff --git a/src/nvim/tui/input.h b/src/nvim/tui/input.h index 49ae32f00e..77bd6fa132 100644 --- a/src/nvim/tui/input.h +++ b/src/nvim/tui/input.h @@ -12,7 +12,7 @@ typedef struct term_input { // Phases: -1=all 0=disabled 1=first-chunk 2=continue 3=last-chunk int8_t paste; bool waiting; - bool waiting_for_bg_response; + int8_t waiting_for_bg_response; TermKey *tk; #if TERMKEY_VERSION_MAJOR > 0 || TERMKEY_VERSION_MINOR > 18 TermKey_Terminfo_Getstr_Hook *tk_ti_hook_fn; ///< libtermkey terminfo hook diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 956d4eb9da..150862bb18 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -296,7 +296,7 @@ static void terminfo_start(UI *ui) unibi_out(ui, unibi_keypad_xmit); unibi_out(ui, unibi_clear_screen); // Ask the terminal to send us the background color. - data->input.waiting_for_bg_response = true; + data->input.waiting_for_bg_response = 5; unibi_out_ext(ui, data->unibi_ext.get_bg); // Enable bracketed paste unibi_out_ext(ui, data->unibi_ext.enable_bracketed_paste); @@ -366,11 +366,6 @@ static void tui_terminal_after_startup(UI *ui) // 2.3 bug(?) which caused slow drawing during startup. #7649 unibi_out_ext(ui, data->unibi_ext.enable_focus_reporting); flush_buf(ui); - - if (data->input.waiting_for_bg_response) { - DLOG("did not get a response for terminal background query"); - data->input.waiting_for_bg_response = false; - } } static void tui_terminal_stop(UI *ui) |