Based on what Fred said, it looks like the design of XGCairoXImageSurface is
flawed and won't work on 16-bit displays. (But did it work for you in the past?)
One thing you could try is switch to XGCairoSurface. In CairoContext.m, just
adjust the comments so you have:
# define _CAIRO_SURFACE_CLASSNAME XGCairoSurface
This will create a cairo xlib surface for the window buffer, instead of a cairo
image surface. Interestingly enough it seems to work for me - I don't think it
worked a few months ago.
as an aside, I would like to switch to XGCairoSurface by default at some point,
rather than fixing XGCairoXImageSurface. It would have a number of benefits,
like:
- enables subpixel antialising for fonts
- removes the need for using shared memory for the window buffer for good
performance (from what I understand, cairo will automatically use shm to
transfer bitmaps to the x server when needed).
- it may allow hardware acceleration for some operations?