[cairo] Problem with quartz backend update logic

Tim Rowley tor at cs.brown.edu
Thu Jan 27 13:28:27 PST 2005


I've been working with the cairo Quartz backend and have
encountered with how it updates the screen after a drawing
operation.  As I follow the code, each drawing operation calls
_cairo_surface_set_image, which in turn calls the backend's
set_image.  In the quartz backend's case, this calls
GCContextDrawImage to composite the image surface it uses onto
the screen (or Quartz surface).  Each time a drawing operation
completes, partially transparent areas are repeatedly composited
and build up opacity.

There's at least two ways of fixing this:

  * have quartz's set_surface clear the surface whenever it does
    the composite.

  * have quartz's get_surface read the underlying pixels and
    change set_surface to do a simple blit instead of compositing.

Which way are the backends supposed to operate?

-tor



More information about the cairo mailing list