patch 8.2.4595: X11: using --remote-wait may keep the CPU busy
Problem: X11: using --remote-wait may keep the CPU busy.
Solution: Set the timeout for select() on every call. (Jacopo Secchiero,
closes #9973)
diff --git a/src/if_xcmdsrv.c b/src/if_xcmdsrv.c
index 81a4d9d..20427c7 100644
--- a/src/if_xcmdsrv.c
+++ b/src/if_xcmdsrv.c
@@ -556,19 +556,16 @@
#define UI_MSEC_DELAY 53
#define SEND_MSEC_POLL 500
-#ifndef HAVE_SELECT
+#ifdef HAVE_SELECT
+ fd_set fds;
+
+ FD_ZERO(&fds);
+ FD_SET(ConnectionNumber(dpy), &fds);
+#else
struct pollfd fds;
fds.fd = ConnectionNumber(dpy);
fds.events = POLLIN;
-#else
- fd_set fds;
- struct timeval tv;
-
- tv.tv_sec = 0;
- tv.tv_usec = SEND_MSEC_POLL * 1000;
- FD_ZERO(&fds);
- FD_SET(ConnectionNumber(dpy), &fds);
#endif
time(&start);
@@ -593,11 +590,17 @@
// Just look out for the answer without calling back into Vim
if (localLoop)
{
-#ifndef HAVE_SELECT
- if (poll(&fds, 1, SEND_MSEC_POLL) < 0)
+#ifdef HAVE_SELECT
+ struct timeval tv;
+
+ // Set the time every call, select() may change it to the remaining
+ // time.
+ tv.tv_sec = 0;
+ tv.tv_usec = SEND_MSEC_POLL * 1000;
+ if (select(FD_SETSIZE, &fds, NULL, NULL, &tv) < 0)
break;
#else
- if (select(FD_SETSIZE, &fds, NULL, NULL, &tv) < 0)
+ if (poll(&fds, 1, SEND_MSEC_POLL) < 0)
break;
#endif
}
diff --git a/src/version.c b/src/version.c
index 1cb9ceb..f71228b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4595,
+/**/
4594,
/**/
4593,