Dynamic damage history
Allocate the array of damage regions dynamically according to demand, which is whatever the maximum value of buffer age we get from the graphics driver. This saves tens of kilobytes of memory because instead of cycling through 16 Cairo regions we can now get away with only 2 (on a typical triple buffered driver).
Edited by Daniel van Vugt