matrix

screensaver inspired by the 1999 sci-fi flick The Matrix
by Erik O Shaughnessy
1999

History 01-Nov-2000: Allocation checks
23-Jul-1999: Unleashed on an unsuspecting world
29-Jun-1999: More hacking by Jeremy Buhler (jbuhler_at_cs.washington.edu)
- fix memory-related bugs found by xlock maintainer
- properly reinitialize screen with new size when init()
is called multiple times
- reinstate multiple final characters (suggested by
Joan Touzet)
- reduce delay to 1 ms (provisionally)
- decouple pixmap height from screen height, to permit
less memory use and shorter, more frequent updates
(for smoother scrolling on slow boxes, but nothing
will help if the machine is busy. Also restores
broken display on very small windows).
- nevertheless, certain display parameters such as the
interval between column speed updates should depend on
the screen height -- enforce this at runtime.
- fix column spacing to use entire window
- remove redundant size fields from matrix_t and column_t
structures -- rely on character size and window size
instead.
- consistently use PICK_MATRIX() instead of passing
mp as a parameter whenever the active screen is
implicitly required.
27-Jun-1999: Overhauled by Jeremy Buhler (jbuhler_at_cs.washington.edu)
- use screen-to-screen copies as much as possible
- get by with a single pixmap per column instead of two
- try to optimize draw_matrix() and new_column() as much
as humanly possible
- fixed double-freeing in release_matrix()
- increased delay to 10 ms to prevent hyperfast scrolling
- minor cleanups; removed unused or duplicate code/data
26-Jun-1999: Tweaks by Jeremy Buhler (jbuhler_at_cs.washington.edu)
- Use larger Katakana font with numbers
- tweak character colors
- change string and gap distributions for lower screen density
- Matrix strings end with a fixed character
- fix scrolling artifacts due to gaps between two column
pixmaps
- minor code cleanups to allow future parameterization
of speed, density
09-Jun-1999: Tweaks by Joan Touzet to look more like the original film's
effects
22-Apr-1999: Initial version