changeset 10019:782a8070c3a6 v7.4.2282

commit https://github.com/vim/vim/commit/0abe0522d0e52b50c6eab52323be558eb56fe95e Author: Bram Moolenaar <Bram@vim.org> Date: Sun Aug 28 16:53:12 2016 +0200 patch 7.4.2282 Problem: When a child process is very fast waiting 10 msec for it is noticeable. (Ramel Eshed) Solution: Start waiting for 1 msec and gradually increase.
author Christian Brabandt <cb@256bit.org>
date Sun, 28 Aug 2016 17:00:07 +0200
parents 04d91be62075
children ade52c52fae7
files src/os_unix.c src/version.c
diffstat 2 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3934,6 +3934,7 @@ mch_new_shellsize(void)
 wait4pid(pid_t child, waitstatus *status)
 {
     pid_t wait_pid = 0;
+    long delay_msec = 1;
 
     while (wait_pid != child)
     {
@@ -3948,8 +3949,10 @@ wait4pid(pid_t child, waitstatus *status
 # endif
 	if (wait_pid == 0)
 	{
-	    /* Wait for 10 msec before trying again. */
-	    mch_delay(10L, TRUE);
+	    /* Wait for 1 to 10 msec before trying again. */
+	    mch_delay(delay_msec, TRUE);
+	    if (++delay_msec > 10)
+		delay_msec = 10;
 	    continue;
 	}
 	if (wait_pid <= 0
@@ -4929,6 +4932,8 @@ finished:
 # if defined(FEAT_XCLIPBOARD) && defined(FEAT_X11)
 	    else
 	    {
+		long delay_msec = 1;
+
 		/*
 		 * Similar to the loop above, but only handle X events, no
 		 * I/O.
@@ -4961,7 +4966,11 @@ finished:
 		    /* Handle any X events, e.g. serving the clipboard. */
 		    clip_update();
 
-		    mch_delay(10L, TRUE);
+		    /* Wait for 1 to 10 msec. 1 is faster but gives the child
+		     * less time. */
+		    mch_delay(delay_msec, TRUE);
+		    if (++delay_msec > 10)
+			delay_msec = 10;
 		}
 	    }
 # endif
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2282,
+/**/
     2281,
 /**/
     2280,