From: Chris Hanson Date: Wed, 6 Mar 1996 07:04:10 +0000 (+0000) Subject: Fix bug: new screens didn't update correctly under Linux (and probably X-Git-Tag: 20090517-FFI~5667 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=171faf389bb95ac94d72584fa92ef32ce59d0f74;p=mit-scheme.git Fix bug: new screens didn't update correctly under Linux (and probably other unixes), because their first update occurred before the first Expose event arrived, and that first update caused the NEEDS-UPDATE? flag to be cleared. The fix is to clear NEEDS-UPDATE? only when SCREEN-UPDATE is run. --- diff --git a/v7/src/edwin/screen.scm b/v7/src/edwin/screen.scm index 7df2c71e4..3fe491a1e 100644 --- a/v7/src/edwin/screen.scm +++ b/v7/src/edwin/screen.scm @@ -1,8 +1,8 @@ ;;; -*-Scheme-*- ;;; -;;; $Id: screen.scm,v 1.106 1995/07/02 06:38:33 cph Exp $ +;;; $Id: screen.scm,v 1.107 1996/03/06 07:04:10 cph Exp $ ;;; -;;; Copyright (c) 1989-95 Massachusetts Institute of Technology +;;; Copyright (c) 1989-96 Massachusetts Institute of Technology ;;; ;;; This material was developed by the Scheme project at the ;;; Massachusetts Institute of Technology, Department of @@ -174,13 +174,14 @@ (define (update-screen! screen display-style) (if (and display-style (not (eq? 'NO-OUTPUT display-style))) (screen-force-update screen)) - (and (with-screen-in-update screen display-style - (lambda () - (editor-frame-update-display! (screen-root-window screen) - display-style))) - (begin - (set-screen-needs-update?! screen false) - true))) + (let ((finished? + (with-screen-in-update screen display-style + (lambda () + (editor-frame-update-display! (screen-root-window screen) + display-style))))) + (if (eq? finished? #t) + (set-screen-needs-update?! screen #f)) + finished?)) ;;; Interface from update optimizer to terminal: @@ -648,13 +649,14 @@ screen (lambda () (and (thunk) - (or (not (screen-visible? screen)) + (if (screen-visible? screen) (and (or (not (screen-needs-update? screen)) (and (not (eq? 'NO-OUTPUT display-style)) (screen-update screen display-style))) (begin (screen-update-cursor screen) - true)))))))) + #t)) + 'INVISIBLE)))))) (set-screen-in-update?! screen old-flag) finished?)))))