home *** CD-ROM | disk | FTP | other *** search
- To: vim_dev@googlegroups.com
- Subject: Patch 7.3.595
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- Mime-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 7.3.595
- Problem: The X command server responds slowly
- Solution: Change the loop that waits for replies. (Brian Burns)
- Files: src/if_xcmdsrv.c
-
-
- *** ../vim-7.3.594/src/if_xcmdsrv.c 2012-07-10 14:25:00.000000000 +0200
- --- src/if_xcmdsrv.c 2012-07-10 14:44:13.000000000 +0200
- ***************
- *** 572,632 ****
- {
- time_t start;
- time_t now;
- - time_t lastChk = 0;
- XEvent event;
- ! XPropertyEvent *e = (XPropertyEvent *)&event;
- ! # define SEND_MSEC_POLL 50
-
- time(&start);
- ! while (endCond(endData) == 0)
- {
- time(&now);
- if (seconds >= 0 && (now - start) >= seconds)
- break;
- ! if (now != lastChk)
- ! {
- ! lastChk = now;
- ! if (!WindowValid(dpy, w))
- ! break;
- ! /*
- ! * Sometimes the PropertyChange event doesn't come.
- ! * This can be seen in eg: vim -c 'echo remote_expr("gvim", "3+2")'
- ! */
- ! serverEventProc(dpy, NULL);
- ! }
- if (localLoop)
- {
- - /* Just look out for the answer without calling back into Vim */
- #ifndef HAVE_SELECT
- - struct pollfd fds;
- -
- - fds.fd = ConnectionNumber(dpy);
- - fds.events = POLLIN;
- if (poll(&fds, 1, SEND_MSEC_POLL) < 0)
- break;
- #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);
- ! if (select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &tv) < 0)
- break;
- #endif
- - while (XEventsQueued(dpy, QueuedAfterReading) > 0)
- - {
- - XNextEvent(dpy, &event);
- - if (event.type == PropertyNotify && e->window == commWindow)
- - serverEventProc(dpy, &event);
- - }
- }
- else
- {
- if (got_int)
- break;
- ! ui_delay((long)SEND_MSEC_POLL, TRUE);
- ui_breakcheck();
- }
- }
- --- 572,626 ----
- {
- time_t start;
- time_t now;
- XEvent event;
- !
- ! #define UI_MSEC_DELAY 50
- ! #define SEND_MSEC_POLL 500
- ! #ifndef HAVE_SELECT
- ! 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);
- ! while (TRUE)
- {
- + while (XCheckWindowEvent(dpy, commWindow, PropertyChangeMask, &event))
- + serverEventProc(dpy, &event);
- +
- + if (endCond(endData) != 0)
- + break;
- + if (!WindowValid(dpy, w))
- + break;
- time(&now);
- if (seconds >= 0 && (now - start) >= seconds)
- break;
- !
- ! /* Just look out for the answer without calling back into Vim */
- if (localLoop)
- {
- #ifndef HAVE_SELECT
- if (poll(&fds, 1, SEND_MSEC_POLL) < 0)
- break;
- #else
- ! if (select(FD_SETSIZE, &fds, NULL, NULL, &tv) < 0)
- break;
- #endif
- }
- else
- {
- if (got_int)
- break;
- ! ui_delay((long)UI_MSEC_DELAY, TRUE);
- ui_breakcheck();
- }
- }
- *** ../vim-7.3.594/src/version.c 2012-07-10 14:25:00.000000000 +0200
- --- src/version.c 2012-07-10 14:52:16.000000000 +0200
- ***************
- *** 716,717 ****
- --- 716,719 ----
- { /* Add new patch number below this line */
- + /**/
- + 595,
- /**/
-
- --
- hundred-and-one symptoms of being an internet addict:
- 104. When people ask about the Presidential Election you ask "Which country?"
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
- /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
- \\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
-