Common Lisp Interface Manager 2.0 User's Guide > Chapter 14 Output Recording and Redisplay


14.3 Conceptual Overview of Incremental Redisplay

Some kinds of applications can benefit greatly from the ability to redisplay information on a window only when that information has changed. This feature, called incremental redisplay , can significantly improve the speed at which your application updates information on the screen. Incremental redisplay is very useful for programs that display a window of changing information where some portions of the window are static and some are continually changing.

Incremental redisplay is a facility to allow you to change the output in an output history (and hence on the screen or other output device). It allows you to redisplay pieces of the existing output differently, under your control. "Incremental" here means that CLIM redisplays only the part of the output history visible in the viewport that has changed and thus needs to be redisplayed.

There are two different ways to do incremental redisplay:

Call redisplay on an output record.

This essentially tells the system to start that output record over from scratch. It compares the results with the existing output and tries to do minimal redisplay. The updating-output form allows you to assist the system by informing it that entire branches of the output history are known not to have changed. updating-output also allows you to communicate the fact that a piece of the output record hierarchy has moved.

Update the output history manually, and then notify the output record that its child has changed.

This causes CLIM to propagate the changes up the output record tree and allows parent output records to readjust themselves to account for the changes.

Each way is appropriate under different circumstances. redisplay is often easier to code and is more useful in cases where there might be large changes between two passes, or where you have little idea as to what the changes might be. Notifying the output record of changes can be more efficient for small changes at the bottom of the output-record hierarchy, or in cases where you are well informed as to the specific changes necessary and can describe these changes to the system.

Common Lisp Interface Manager 2.0 User's Guide - 22 Dec 2009