modification on previous commit for blocking in expeditor

original commit: 02844bee98871bf03cf435441ba23556ad4fc6aa
This commit is contained in:
yjqww6 2016-06-14 20:35:27 +08:00
parent 2b94b98c06
commit 6fd5cb7fdd
2 changed files with 17 additions and 8 deletions

2
LOG
View File

@ -200,3 +200,5 @@
release_notes.stex
- fixed spelling of non-existent
s/syntax.ss
- fixed unnessesary blocking in expeditor on Windows.
c/expeditor.c

View File

@ -73,6 +73,10 @@ static IBOOL s_ee_init_term(void) {
static ptr s_ee_read_char(IBOOL blockp) {
DWORD cNumRead;
INPUT_RECORD irInBuf[1];
#ifdef PTHREADS
ptr tc;
#endif /* PTHREADS */
BOOL succ;
static char buf[10];
static int bufidx = 0;
static int buflen = 0;
@ -97,15 +101,18 @@ static ptr s_ee_read_char(IBOOL blockp) {
}
#ifdef PTHREADS
ptr tc = get_thread_context();
deactivate_thread(tc);
#endif
tc = get_thread_context();
if (DISABLECOUNT(tc) == FIX(0)) {
deactivate_thread(tc);
succ = ReadConsoleInput(hStdin, irInBuf, 1, &cNumRead);
reactivate_thread(tc);
} else {
succ = ReadConsoleInput(hStdin, irInBuf, 1, &cNumRead);
}
#else /* PTHREADS */
succ = ReadConsoleInput(hStdin, irInBuf, 1, &cNumRead);
#endif /* PTHREADS */
BOOL succ = ReadConsoleInput(hStdin, irInBuf, 1, &cNumRead);
#ifdef PTHREADS
reactivate_thread(tc);
#endif
if (!succ)
S_error1("expeditor", "error getting console info: ~a",