summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-08-16 10:27:13 +0200
committerBram Moolenaar <Bram@vim.org>2019-08-16 10:27:13 +0200
commit52953194afccbcb6c2fd013b7a9e2cfbf202b9d0 (patch)
tree53a5628dbdb5a19ca1c533c6f6c31980cdfdbbe7
parent7e6feb9eeb095ec424430ff4332c77f70372ce62 (diff)
downloadvim-git-52953194afccbcb6c2fd013b7a9e2cfbf202b9d0.tar.gz
patch 8.1.1853: timers test is still flakyv8.1.1853
Problem: Timers test is still flaky. Solution: Compute the time to sleep more accurately.
-rw-r--r--src/ex_docmd.c26
-rw-r--r--src/version.c2
2 files changed, 23 insertions, 5 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 6369f10aa..b548ae153 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 abbb3b0e5..38290c6b6 100644
--- 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,