# HG changeset patch # User Bram Moolenaar # Date 1565944203 -7200 # Node ID 316ae5631c1d601d3d0ade7c9f68c411fbad7a1e # Parent 09d3e7bf370942c167f3493d2cff44a25140071f patch 8.1.1853: timers test is still flaky commit https://github.com/vim/vim/commit/52953194afccbcb6c2fd013b7a9e2cfbf202b9d0 Author: Bram Moolenaar Date: Fri Aug 16 10:27:13 2019 +0200 patch 8.1.1853: timers test is still flaky Problem: Timers test is still flaky. Solution: Compute the time to sleep more accurately. diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -7675,12 +7675,19 @@ ex_sleep(exarg_T *eap) void do_sleep(long msec) { - long done; + long done = 0; long wait_now; +# ifdef ELAPSED_FUNC + elapsed_T start_tv; + + // Remember at what time we started, so that we know how much longer we + // should wait after waiting for a bit. + ELAPSED_INIT(start_tv); +# endif cursor_on(); out_flush_cursor(FALSE, FALSE); - for (done = 0; !got_int && done < msec; done += wait_now) + while (!got_int && done < msec) { wait_now = msec - done > 1000L ? 1000L : msec - done; #ifdef FEAT_TIMERS @@ -7700,6 +7707,7 @@ do_sleep(long msec) wait_now = 20L; #endif ui_delay(wait_now, TRUE); + #ifdef FEAT_JOB_CHANNEL if (has_any_channel()) ui_breakcheck_force(TRUE); @@ -7707,11 +7715,19 @@ do_sleep(long msec) #endif ui_breakcheck(); #ifdef MESSAGE_QUEUE - /* Process the netbeans and clientserver messages that may have been - * received in the call to ui_breakcheck() when the GUI is in use. This - * may occur when running a test case. */ + // Process the netbeans and clientserver messages that may have been + // received in the call to ui_breakcheck() when the GUI is in use. This + // may occur when running a test case. parse_queued_messages(); #endif + +# ifdef ELAPSED_FUNC + // actual time passed + done = ELAPSED_FUNC(start_tv); +# else + // guestimate time passed (will actually be more) + done += wait_now; +# endif } // If CTRL-C was typed to interrupt the sleep, drop the CTRL-C from the diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1853, +/**/ 1852, /**/ 1851,