CLIM mail archive


Incremental Redisplay Performance

    Date: Tue, 3 Mar 1992 08:33 PST
    From: Scott McKay <SWM@SAPSUCKER.SCRC.Symbolics.COM>

	Date: Mon, 2 Mar 1992 21:33 EST
	From: will taylor <>
	A typical redisplay using this technique takes less than a second, while the default
	redisplay took about 8 seconds (for a 50 node graph).

	This experience reinforces my hope that CLIM 2.0's implementation and documentation
	will place more emphasis on incremental redisplay performance -- with the default 
	redisplay functionality my UI was just about unusable.  With my modificaitons the 
	UI demonstrates the advertised claims of CLIM.

    ***New message.  I made a mistake in the code I supplied.  Sorry.***

    This reply is just meant to provide a few more bits of information.
    Please don't think that I am in any way trying to defend the terrible
    performance of CLIM's incremental redisplay.

    Here is a kludgy patch that implements it.  I have not tested this in
    in your pane.

Thanks for your detailed response -- I hope that it will be typical of the future
documentation of CLIM's incremental redisplay.

Will CLIM 1.1 correct the extreme slowness of changing layouts in CLIM 1.0?  I went
to my own redisplay in that case as well, by creating multiple windows using

(defmethod MAKE-OVERLAY-WINDOW-STREAM ((frame APPLICATION-FRAME) &key pane-to-overlay
				       default-text-style window-class (scroll-bars :both)
				       (borders t))
  "return window stream located over pane-to-overlay -- not in frame layout"
  (let* ((parent (frame-top-level-window frame))
	 (input-buffer (stream-input-buffer parent)))
    (multiple-value-bind (left top right bottom)
	(bounding-rectangle* pane-to-overlay)
      (open-window-stream :parent parent
			  :left left :top top :right right :bottom bottom
			  :input-buffer input-buffer
			  :default-text-style default-text-style
			  :scroll-bars scroll-bars
			  :borders borders
			  :window-class window-class))))

which occupy the same frame coordinates and then using (window-expose pane) to
expose the pane which belonged to the currently selected layout.  Apparently there is
a (REDISPLAY-FRAME-PANE frame pane :force-p t) done on each pane on a newly selected
layout whether or not the pane is common to the previous layout and whether or not
the pane has changed.

When is CLIM 1.1 to be expected?

==> Will Taylor

Follow-Ups: References:

Main Index | Thread Index