Change handling of "configure" events so that the microcode and Edwin
authorChris Hanson <org/chris-hanson/cph>
Mon, 16 Aug 1993 08:09:30 +0000 (08:09 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 16 Aug 1993 08:09:30 +0000 (08:09 +0000)
update their notions of the window's size at the same time.
Previously, the microcode was updated first, then Edwin was updated
later.  It was possible for Edwin to write to the screen in the
interval, with arguments based on its (obsolete) notion of the
window's size.

v7/src/edwin/xterm.scm

index bc7505f3de72a3772dca7f19af2e3c57579c8b49..9df8a46d7d54cc7be543fdb52dd6646cecf501a1 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: xterm.scm,v 1.41 1993/08/02 03:06:38 cph Exp $
+;;;    $Id: xterm.scm,v 1.42 1993/08/16 08:09:30 cph Exp $
 ;;;
 ;;;    Copyright (c) 1989-93 Massachusetts Institute of Technology
 ;;;
 \f
 (define-event-handler event-type:configure
   (lambda (screen event)
-    (let ((xterm (screen-xterm screen))
-         (x-size (vector-ref event 2))
-         (y-size (vector-ref event 3)))
-      (xterm-reconfigure xterm x-size y-size)
-      (let ((x-size (xterm-map-x-size xterm x-size))
-           (y-size (xterm-map-y-size xterm y-size)))
-       (and (not (and (= x-size (screen-x-size screen))
-                      (= y-size (screen-y-size screen))))
-            (make-input-event 'SET-SCREEN-SIZE
-                              (lambda (screen x-size y-size)
-                                (set-screen-size! screen x-size y-size)
-                                (update-screen! screen #t))
-                              screen x-size y-size))))))
+    (make-input-event 'SET-SCREEN-SIZE
+                     (lambda (screen event)
+                       (let ((xterm (screen-xterm screen))
+                             (x-size (vector-ref event 2))
+                             (y-size (vector-ref event 3)))
+                         (xterm-reconfigure xterm x-size y-size)
+                         (let ((x-size (xterm-map-x-size xterm x-size))
+                               (y-size (xterm-map-y-size xterm y-size)))
+                           (if (not (and (= x-size (screen-x-size screen))
+                                         (= y-size (screen-y-size screen))))
+                               (begin
+                                 (set-screen-size! screen x-size y-size)
+                                 (update-screen! screen #t))))))
+                     screen event)))
 
 (define-event-handler event-type:focus-in
   (lambda (screen event)