Here are some more insights on the cairo branch and the failure to display image magick images.

1. The image is never copied from the ​image magick image to the XImage as the function lookup_rgb_color() is essentially a no-op for CAIRO. I worked around this by hardcoding the following in lookup_rgb_color()

  pixel = (((r>>8) << 16) | ((g>>8)<<8) | (b>>8));

2. image_sync_to_pixmaps() is never called so the XImage is never synced to the server! I temporarily worked around this by the following temporary patch:

    /* Put ximg into the image.  */
    image_put_x_image (f, img, ximg, 0);
+  image_sync_to_pixmaps(f,img);

This made the image show up on loading. But the image still isn't shown properly e.g. when resizing the frame. (Why?)

Unfortunately this is as far as I got. My partial conclusion is that the changes in the cairo branch somehow destroyed the refreshing of images (and possibly other refreshing issues). What is needed to solve this is someone knowledgeable of the X11 code in image.c . Unfortunately I can't spend any more time on it.

Regards,
Dov