summaryrefslogtreecommitdiff
path: root/source/ap/vim/patches/7.3.595
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.595')
-rw-r--r--source/ap/vim/patches/7.3.595154
1 files changed, 154 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.595 b/source/ap/vim/patches/7.3.595
new file mode 100644
index 00000000..0fc9b522
--- /dev/null
+++ b/source/ap/vim/patches/7.3.595
@@ -0,0 +1,154 @@
+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 ///