]> granicus.if.org Git - vim/commitdiff
patch 7.4.2282 v7.4.2282
authorBram Moolenaar <Bram@vim.org>
Sun, 28 Aug 2016 14:53:12 +0000 (16:53 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 28 Aug 2016 14:53:12 +0000 (16:53 +0200)
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.

src/os_unix.c
src/version.c

index d5c5d846bb2019bba7172ac1afeaf2e84760950a..941e8e899ef0c634b010216245022c0c4a2371a2 100644 (file)
@@ -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
index afe9c981cd77cfa9ca94a7375481b524b897d269..5743911f6cf1556017817ccce3ededeb78ce8e20 100644 (file)
@@ -763,6 +763,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2282,
 /**/
     2281,
 /**/