diff options
author | Utkarsh Maheshwari <UtkarshME96@gmail.com> | 2018-03-30 20:39:29 +0530 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2018-03-30 17:09:29 +0200 |
commit | f21867a15cf16a1bd04df33c92acba7edcc724c2 (patch) | |
tree | 294bf8b8cae1420408d9966405faf94304454f30 /src | |
parent | e54ff10d44a18b59350503accc68811e4a5be29f (diff) | |
download | rneovim-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')
-rw-r--r-- | src/nvim/eval.c | 6 | ||||
-rw-r--r-- | src/nvim/testdir/test_timers.vim | 2 |
2 files changed, 7 insertions, 1 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; } } diff --git a/src/nvim/testdir/test_timers.vim b/src/nvim/testdir/test_timers.vim index d377062780..81ac2b6171 100644 --- a/src/nvim/testdir/test_timers.vim +++ b/src/nvim/testdir/test_timers.vim @@ -119,7 +119,7 @@ func Test_paused() let slept = WaitFor('g:val == 1') call assert_equal(1, g:val) if has('reltime') - call assert_inrange(0, 60, slept) + call assert_inrange(0, 100, slept) else call assert_inrange(0, 10, slept) endif |