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

Carl Worth cworth at east.isi.edu
Wed Jul 30 06:03:48 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.

Graydon,

Thanks for looking into this! As you saw, I had some code lying there,
but never had the chance to try fixing it up.

Other benefits of having this code working include the ability to
transparently use Cairo with X servers without the Render
extension. It will also even automatically fall back to using local
rendering for unsupported operations when using an X server with an
old version of the Render extension, (say today's Debian unstable
xfree86 package that doesn't support CompositeTrapezoid request).

Plus, the ability to composite two surface of different types,
(in-memory image with window), or even from two different X servers,
should be fun to play with.

I haven't committed this to Xc, but just because my local tree doesn't
even use Xc anymore -- it's already been absorbed up into Cairo. My
tree builds now, but I'm only getting output on the blue channel for
some reason. As soon as I fix that, I'll commit and add this
implementation as well.

Oh, and with this working, it won't be necessary to have
cairo_put_image anymore. Instead, one would just create a
cairo_surface_t from the image and use cairo_show_surface. So I'll
probably drop cairo_put_image from the interface.

-Carl




More information about the cairo mailing list