# HG changeset patch # User Bram Moolenaar # Date 1647774903 -3600 # Node ID 7dec326adb365579eec5992ee256853bb1c89c77 # Parent dce918af0c00f6ee3551c6ecfa45c39f2ddb4736 patch 8.2.4595: X11: using --remote-wait may keep the CPU busy Commit: https://github.com/vim/vim/commit/6f953636771fe90e593b1c0ec883c261f6dc1bbb Author: jsecchiero Date: Sun Mar 20 11:07:17 2022 +0000 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 --- a/src/if_xcmdsrv.c +++ b/src/if_xcmdsrv.c @@ -556,19 +556,16 @@ ServerWait( #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 @@ ServerWait( // 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 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4595, +/**/ 4594, /**/ 4593,