Mercurial > vim
changeset 12090:c4caf49c8bf4 v8.0.0925
patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
commit https://github.com/vim/vim/commit/62426e168ef29fb941d1bd91a112fa09445322a5
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Aug 13 15:37:58 2017 +0200
patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Problem: MS-Windows GUI: channel I/O not handled right away.
Solution: Don't call process_message() unless a message is available.
(Yasuhiro Matsumoto, closes #1969)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 13 Aug 2017 15:45:04 +0200 |
parents | d61607f10e9f |
children | b3dff741a6a9 |
files | src/gui_w32.c src/version.c |
diffstat | 2 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -2073,20 +2073,23 @@ gui_mch_wait_for_chars(int wtime) did_add_timer = FALSE; #endif #ifdef MESSAGE_QUEUE - /* Check channel while waiting message. */ + /* Check channel I/O while waiting for a message. */ for (;;) { MSG msg; parse_queued_messages(); - if (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) - || MsgWaitForMultipleObjects(0, NULL, FALSE, 100, QS_ALLINPUT) - != WAIT_TIMEOUT) + if (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) + { + process_message(); break; - } -#endif - + } + else if (MsgWaitForMultipleObjects(0, NULL, FALSE, 100, QS_ALLINPUT) + != WAIT_TIMEOUT) + break; + } +#else /* * Don't use gui_mch_update() because then we will spin-lock until a * char arrives, instead we use GetMessage() to hang until an @@ -2094,6 +2097,7 @@ gui_mch_wait_for_chars(int wtime) * returning as soon as it contains a single char -- webb */ process_message(); +#endif if (input_available()) {