diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-11-02 16:37:31 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-11-02 16:47:50 -0300 |
commit | 75a5674cd2d0921400d2d2c7a9ce9701c58c5b25 (patch) | |
tree | 0d92e2b6dfc6bc721ffbd4afcde29081b3eef156 /src/nvim/os/signal.c | |
parent | a1dd70b1d0e9ef155c81eeb249f137e763482d10 (diff) | |
download | rneovim-75a5674cd2d0921400d2d2c7a9ce9701c58c5b25.tar.gz rneovim-75a5674cd2d0921400d2d2c7a9ce9701c58c5b25.tar.bz2 rneovim-75a5674cd2d0921400d2d2c7a9ce9701c58c5b25.zip |
event: Ensure the event loop has been cleaned up in event_teardown
- Add input_teardown/signal_teardown to take care of closing signal/stdin
handles.
- Call those functions in event_teardown, and ensure there are no active handles
by entering an infinite loop when there are unclosed handles(think of this as
an assertion that can't go unoticed on travis).
- Move event_teardown call to the end of mch_exit. That is required because
event_poll may still be called in that function.
Diffstat (limited to 'src/nvim/os/signal.c')
-rw-r--r-- | src/nvim/os/signal.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/nvim/os/signal.c b/src/nvim/os/signal.c index d913df4cbf..cf8ba85ed5 100644 --- a/src/nvim/os/signal.c +++ b/src/nvim/os/signal.c @@ -55,6 +55,20 @@ void signal_init(void) #endif } +void signal_teardown(void) +{ + signal_stop(); + uv_close((uv_handle_t *)&sint, NULL); + uv_close((uv_handle_t *)&spipe, NULL); + uv_close((uv_handle_t *)&shup, NULL); + uv_close((uv_handle_t *)&squit, NULL); + uv_close((uv_handle_t *)&sterm, NULL); + uv_close((uv_handle_t *)&swinch, NULL); +#ifdef SIGPWR + uv_close((uv_handle_t *)&spwr, NULL); +#endif +} + void signal_stop(void) { uv_signal_stop(&sint); |