I dug around a bit more and came up with a workaround. In _get_image_surface() in cairo-xlib-surface.c the code commented "XXX This can't work." is getting used. (Not a confidence-inspiring comment :-).
It looks like the func _cairo_image_surface_create_with_masks() ends up putting depth==0 in cairo_image_surface_t. Still dunno if that's normal, but it seems to get through to the XPutImage and the server doesn't like it. As a workaround I changed the code earlier in _get_image_surface() from masks.alpha_mask = 0; to masks.alpha_mask = 0xff; This is a dirty hack, I guess it hard-codes 8-bit greyscale or something. But it has the effect of making the test if (_CAIRO_MASK_FORMAT (&masks, &format)) succeed, and the code under that leg using cairo_image_surface_create_for_data() ends up giving depth==8, which the server likes. It makes all the problems I reported go away. So my guess would be there's something dodgy in the code when an 8-bit pseudocolor visual is in use, I'd imagine the problems should show up for anyone with that. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]