aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/event/loop.c6
-rw-r--r--src/nvim/main.c2
-rw-r--r--src/nvim/tui/tui.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/src/nvim/event/loop.c b/src/nvim/event/loop.c
index 6f3e6b9253..a4c4e5ac9c 100644
--- a/src/nvim/event/loop.c
+++ b/src/nvim/event/loop.c
@@ -76,7 +76,7 @@ void loop_on_put(Queue *queue, void *data)
uv_stop(&loop->uv);
}
-void loop_close(Loop *loop)
+void loop_close(Loop *loop, bool wait)
{
uv_mutex_destroy(&loop->mutex);
uv_close((uv_handle_t *)&loop->children_watcher, NULL);
@@ -84,8 +84,8 @@ void loop_close(Loop *loop)
uv_close((uv_handle_t *)&loop->poll_timer, NULL);
uv_close((uv_handle_t *)&loop->async, NULL);
do {
- uv_run(&loop->uv, UV_RUN_DEFAULT);
- } while (uv_loop_close(&loop->uv));
+ uv_run(&loop->uv, wait ? UV_RUN_DEFAULT : UV_RUN_NOWAIT);
+ } while (uv_loop_close(&loop->uv) && wait);
queue_free(loop->fast_events);
queue_free(loop->thread_events);
queue_free(loop->events);
diff --git a/src/nvim/main.c b/src/nvim/main.c
index a153931d8a..86bef782f7 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -165,7 +165,7 @@ void event_teardown(void)
signal_teardown();
terminal_teardown();
- loop_close(&main_loop);
+ loop_close(&main_loop, true);
}
/// Performs early initialization.
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index db06ffe94a..fc2a2604d6 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -237,7 +237,7 @@ static void tui_main(UIBridgeData *bridge, UI *ui)
signal_watcher_stop(&data->cont_handle);
signal_watcher_close(&data->cont_handle, NULL);
signal_watcher_close(&data->winch_handle, NULL);
- loop_close(&tui_loop);
+ loop_close(&tui_loop, false);
kv_destroy(data->invalid_regions);
xfree(data);
xfree(ui);