edwin: Reworked get-console-input-operations.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 28 Apr 2012 18:45:46 +0000 (11:45 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 28 Apr 2012 18:45:46 +0000 (11:45 -0700)
commitac50f9c9e3c74c84ea14461b179d8c23f2cec5c7
treefd5a28fdf1f3e00203f6c352ee1e92fba35a82a6
parentd48d9ac0c042d3338f92fe232b98482fd25bb897
edwin: Reworked get-console-input-operations.

Fixed the loop(s) to NOT block when incomplete-pending.  They must
busy-wait for half a second.  Thus the command key prefix ESC is
correctly echoed.

Also followed the example of get-xterm-input-operations, using
set-interrupt-enables! to implement an atomic section within which the
Edwin thread can test all event sources and block iff they are all
empty.  Thus ONE loop tests sources and matches special keys, and uses
the new procedure %channel-read, a version of channel-read that can be
unblocked by an interrupt or process status change.
src/edwin/edwin.pkg
src/edwin/tterm.scm
src/runtime/io.scm