[Cairo] [patch] implement push/pull on xc surfaces

Carl Worth cworth at east.isi.edu
Fri Sep 5 15:45:06 PDT 2003

On Jul 29, graydon hoare wrote:
 > this implements the previously-disabled push and pull functions on xc
 > surfaces. this allows you to, for example, call cairo_show_surface to
 > display a local image surface on a remote RENDER surface.


Thanks for this patch.

I'm sorry it took so long, but I've finally committed a modified
version of this patch, (obviously it's in Cairo now, not Xc). ;-)

In addition to the feature mention by Graydon, this also enables
running Cairo to display on X servers that do not have the Render
extension, (before this would just crash).

However, I should point out that running Cairo on a non-Render X
server right now is woefully slow. This is the fault of Cairo, not the
server. The current braindead implementation does a GetImage/PutImage
pair for the entire area of every drawable affected by every single
Cairo drawing request.

Obviously this can be optimized greatly, (in many cases with very
little effort). But I thought I should at least put out something that
works[*] first.

Feedback or patches to improve the performance will be welcome, (as


[*] I haven't actually tested this on a non-Render server yet. But I
did install a fake libXrender that acts as if the extension doesn't
exist. So I'm fairly confident I've seen the behavior one will get
with a non-Render server.

More information about the cairo mailing list