aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/event
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-11-17 18:34:48 +0800
committerGitHub <noreply@github.com>2023-11-17 18:34:48 +0800
commit20ec4c776a07492c2e3b995e10b40b1cdb52bc7a (patch)
treefae077048255d77f1768a51e0276ff3daee4373e /src/nvim/event
parentdc9f7b814517045b5354364655f660aae0989710 (diff)
downloadrneovim-20ec4c776a07492c2e3b995e10b40b1cdb52bc7a.tar.gz
rneovim-20ec4c776a07492c2e3b995e10b40b1cdb52bc7a.tar.bz2
rneovim-20ec4c776a07492c2e3b995e10b40b1cdb52bc7a.zip
fix(lua): only disable vim.schedule() when closing main loop (#26090)
Diffstat (limited to 'src/nvim/event')
-rw-r--r--src/nvim/event/loop.c2
-rw-r--r--src/nvim/event/loop.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/nvim/event/loop.c b/src/nvim/event/loop.c
index 3d74fe7d6d..d61666e6d4 100644
--- a/src/nvim/event/loop.c
+++ b/src/nvim/event/loop.c
@@ -17,6 +17,7 @@ void loop_init(Loop *loop, void *data)
{
uv_loop_init(&loop->uv);
loop->recursive = 0;
+ loop->closing = false;
loop->uv.data = loop;
loop->children = kl_init(WatcherPtr);
loop->events = multiqueue_new_parent(loop_on_put, loop);
@@ -149,6 +150,7 @@ static void loop_walk_cb(uv_handle_t *handle, void *arg)
bool loop_close(Loop *loop, bool wait)
{
bool rv = true;
+ loop->closing = true;
uv_mutex_destroy(&loop->mutex);
uv_close((uv_handle_t *)&loop->children_watcher, NULL);
uv_close((uv_handle_t *)&loop->children_kill_timer, NULL);
diff --git a/src/nvim/event/loop.h b/src/nvim/event/loop.h
index 58216f7ec3..977ed8a1ee 100644
--- a/src/nvim/event/loop.h
+++ b/src/nvim/event/loop.h
@@ -40,6 +40,7 @@ typedef struct loop {
uv_async_t async;
uv_mutex_t mutex;
int recursive;
+ bool closing; ///< Set to true if loop_close() has been called
} Loop;
#define CREATE_EVENT(multiqueue, handler, argc, ...) \