summaryrefslogtreecommitdiffstats
path: root/src/os_win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os_win32.c')
-rw-r--r--src/os_win32.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/os_win32.c b/src/os_win32.c
index be7bd95b58..5a84824d36 100644
--- 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;
}