[mcclim-cvs] CVS update: mcclim/incremental-redisplay.lisp

Timothy Moore tmoore at common-lisp.net
Tue Jan 18 09:16:33 UTC 2005


Update of /project/mcclim/cvsroot/mcclim
In directory common-lisp.net:/tmp/cvs-serv1478

Modified Files:
	incremental-redisplay.lisp 
Log Message:

Add explicit calls to FINISH-OUTPUT in COMPUTE-NEW-OUTPUT-RECORDS and
INVOKE-UPDATING-OUTPUT. The current text record was being put in
different subtrees when a new updating output record was created and
when an existing one was found and reused.

Date: Tue Jan 18 01:16:32 2005
Author: tmoore

Index: mcclim/incremental-redisplay.lisp
diff -u mcclim/incremental-redisplay.lisp:1.41 mcclim/incremental-redisplay.lisp:1.42
--- mcclim/incremental-redisplay.lisp:1.41	Tue Jan 11 05:35:18 2005
+++ mcclim/incremental-redisplay.lisp	Tue Jan 18 01:16:30 2005
@@ -353,9 +353,6 @@
    (fixed-position :reader output-record-fixed-position
 		   :initarg :fixed-position :initform nil)
    (displayer :reader output-record-displayer :initarg :displayer)
-   (sub-record :accessor sub-record
-	       :documentation "The actual contents of this record.  All output
-record operations are forwarded to this record.")
    ;; Start and end cursor
    (start-graphics-state :accessor start-graphics-state
 			 :initarg :start-graphics-state
@@ -511,12 +508,18 @@
 				  (setf (output-record-dirty r) :updating))
 			      record
 			      nil)
+    (finish-output stream)
+    ;; Why is this binding here? We need the "environment" in this call that
+    ;; computes the new records of an outer updating output record to resemble
+    ;; that when a record's contents are computed in invoke-updating-output. 
     (letf (((stream-current-output-record stream)
 	    (output-record-parent record)))
       (compute-new-output-records-1 record 
 				    stream
 				    (output-record-displayer record)))))
 
+;;; Create the sub-record that holds the new contents of the updating output
+;;; record.
 (defun %invoke-updating (record stream displayer)
   (letf (((stream-current-output-record stream) record))
     (with-new-output-record (stream)
@@ -838,6 +841,7 @@
 				   (parent-cache nil))
   (unless *enable-updating-output*
     (return-from invoke-updating-output (funcall continuation stream)))
+  (finish-output stream)
   (let ((parent-cache (or parent-cache *current-updating-output* stream)))
     (when (eq unique-id *no-unique-id*)
       (setq unique-id (incf (id-counter parent-cache))))




More information about the Mcclim-cvs mailing list