From 52953194afccbcb6c2fd013b7a9e2cfbf202b9d0 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 16 Aug 2019 10:27:13 +0200 Subject: patch 8.1.1853: timers test is still flaky Problem: Timers test is still flaky. Solution: Compute the time to sleep more accurately. --- src/ex_docmd.c | 26 +++++++++++++++++++++----- src/version.c | 2 ++ 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 6369f10aa3..b548ae1531 100644 --- 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 index abbb3b0e5d..38290c6b66 100644 --- a/src/version.c +++ b/src/version.c @@ -769,6 +769,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1853, /**/ 1852, /**/ -- cgit v1.2.3