From fe32f22a41a5f5173a5950b6bc23ce8531ac2837 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 25 Apr 1989 02:00:36 +0000 Subject: [PATCH] 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. --- v7/src/edwin/xterm.scm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) 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 -- 2.25.1