Timers, Stepping, Co-routines and Riverdance in Squeak
Dan.Ingalls at disney.com
Wed Mar 22 02:37:49 UTC 2000
>> Now, while I suspect that some time could be saved by ignoring
>> damaged rectangles that were completely offscreen, those results
>> are not too shabby in my view. Are you seeing radically different numbers?
>I have a very sparse Morph, like a diagonal line or a hollow polygon that
>occupies a substantial part of the screen. Can I declare a list of smaller
>dirty rectangles in order to speed up World redraw?
At a lower level, you might be interested to look at the code for BitBlt's line-drawing method, drawLoopX:Y:. It accumulates a damage region based on the brush bounds extended along the line, which is then reported to the OS for the necessary screen update. When this was all merged into a single rectangle, it caused the entire screen to be displayed for long 45% lines. Based on that experience, I put in a little logic that issues and resets the damage rectangle whenever it grows to an area of 4000 or more. Makes diagonal lines much faster.
More information about the Squeak-dev