diff src/os_win32.c @ 7797:0d46cea25641 v7.4.1195

commit https://github.com/vim/vim/commit/f12d983deab06b0408781d7a6c2f8970d765b723 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jan 29 21:11:25 2016 +0100 patch 7.4.1195 Problem: The channel feature does not work in the MS-Windows console. Solution: Add win32 console support. (Yasuhiro Matsumoto)
author Christian Brabandt <cb@256bit.org>
date Fri, 29 Jan 2016 21:15:05 +0100
parents 29d4ee3f009a
children c079097365f3
line wrap: on
line diff
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1443,6 +1443,11 @@ WaitForChar(long msec)
     INPUT_RECORD    ir;
     DWORD	    cRecords;
     WCHAR	    ch, ch2;
+#ifdef FEAT_CHANNEL
+    int		    ret;
+    fd_set	    rfds;
+    int		    maxfd;
+#endif
 
     if (msec > 0)
 	/* Wait until the specified time has elapsed. */
@@ -1459,9 +1464,22 @@ WaitForChar(long msec)
 #ifdef FEAT_MZSCHEME
 	mzvim_check_threads();
 #endif
+
 #ifdef FEAT_CLIENTSERVER
 	serverProcessPendingMessages();
 #endif
+
+#ifdef FEAT_CHANNEL
+	FD_ZERO(&rfds);
+	maxfd = channel_select_setup(-1, &rfds);
+	if (maxfd >= 0)
+	{
+	    ret = select(maxfd + 1, &rfds, NULL, NULL, NULL);
+	    if (ret > 0 && channel_select_check(ret, &rfds) > 0)
+		return TRUE;
+	}
+#endif
+
 	if (0
 #ifdef FEAT_MOUSE
 		|| g_nMouseClick != -1
@@ -1562,6 +1580,7 @@ WaitForChar(long msec)
     if (input_available())
 	return TRUE;
 #endif
+
     return FALSE;
 }