aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorUtkarsh Maheshwari <UtkarshME96@gmail.com>2018-03-30 20:39:29 +0530
committerJustin M. Keyes <justinkz@gmail.com>2018-03-30 17:09:29 +0200
commitf21867a15cf16a1bd04df33c92acba7edcc724c2 (patch)
tree294bf8b8cae1420408d9966405faf94304454f30 /src/nvim/eval.c
parente54ff10d44a18b59350503accc68811e4a5be29f (diff)
downloadrneovim-f21867a15cf16a1bd04df33c92acba7edcc724c2.tar.gz
rneovim-f21867a15cf16a1bd04df33c92acba7edcc724c2.tar.bz2
rneovim-f21867a15cf16a1bd04df33c92acba7edcc724c2.zip
timer_pause: stop the timer resource (#8199)
If the timer isn't stopped, it still emits events which consume some CPU. Fix #8188
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 0f7a1eb004..7bdfe7c9ee 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -16861,6 +16861,12 @@ static void f_timer_pause(typval_T *argvars, typval_T *unused, FunPtr fptr)
int paused = (bool)tv_get_number(&argvars[1]);
timer_T *timer = pmap_get(uint64_t)(timers, tv_get_number(&argvars[0]));
if (timer != NULL) {
+ if (!timer->paused && paused) {
+ time_watcher_stop(&timer->tw);
+ } else if (timer->paused && !paused) {
+ time_watcher_start(&timer->tw, timer_due_cb, timer->timeout,
+ timer->timeout);
+ }
timer->paused = paused;
}
}