From: Chris Hanson Date: Tue, 25 Apr 1989 02:00:36 +0000 (+0000) Subject: Changes because `xterm-read-chars' can now return an integer, which X-Git-Tag: 20090517-FFI~12121 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=fe32f22a41a5f5173a5950b6bc23ce8531ac2837;p=mit-scheme.git Changes because `xterm-read-chars' can now return an integer, which means that there were no characters, some other kind of event was received, and the timeout hasn't yet finished. When this occurs, process the events and finish waiting the appropriate amount of time. --- diff --git a/v7/src/edwin/xterm.scm b/v7/src/edwin/xterm.scm index bc0da8032..ddd61e62d 100644 --- a/v7/src/edwin/xterm.scm +++ b/v7/src/edwin/xterm.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/xterm.scm,v 1.2 1989/03/30 16:40:21 jinx Exp $ +;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/xterm.scm,v 1.3 1989/04/25 02:00:36 cph Exp $ ;;; ;;; Copyright (c) 1989 Massachusetts Institute of Technology ;;; @@ -254,11 +254,15 @@ (string-ref buffer 0))))))) (define (xterm-screen/read-chars screen interval) - (let ((result (xterm-read-chars (screen-xterm screen) interval))) - (if (and (not (screen-in-update? screen)) - (xterm-screen/process-events! screen)) - (update-screen! screen false)) - result)) + (let ((xterm (screen-xterm screen))) + (let loop ((interval interval)) + (let ((result (xterm-read-chars xterm interval))) + (if (and (not (screen-in-update? screen)) + (xterm-screen/process-events! screen)) + (update-screen! screen false)) + (if (integer? result) + (loop result) + result))))) (define (xterm-screen/process-events! screen) (let ((xterm (screen-xterm screen))) @@ -340,4 +344,4 @@ make-xterm-input-port with-editor-interrupts-from-X with-X-interrupts-enabled - with-X-interrupts-disabled))) + with-X-interrupts-disabled))) \ No newline at end of file