Changes because `xterm-read-chars' can now return an integer, which
authorChris Hanson <org/chris-hanson/cph>
Tue, 25 Apr 1989 02:00:36 +0000 (02:00 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 25 Apr 1989 02:00:36 +0000 (02:00 +0000)
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

index bc0da8032f95f5a8744fa422db680e320186e245..ddd61e62d46ba647b764aa7f6f69ca5280d2e026 100644 (file)
@@ -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
 ;;;
              (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)))
                      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