[cairo] Painting an image surface into itself in order to scroll it

Nicholas Allen nick.allen at onlinehome.de
Thu Dec 27 00:26:51 PST 2012


If I create an image surface and then try to scroll it by painting it 
into itself then it works as long as I scroll it left, right, or up but 
not if I scroll it down.

It seems like the area is being overwritten with itself before it is 
fully shifted. I want to do this because my application has a viewport 
that gets scrolled and I cache the contents of the viewport and shift it 
as the user scrolls and just repaint the edge areas that get exposed 
rather than the whole viewport.

It seems cairo has a bug that this is not possible with just one image 
surface if you scroll the contents downwards. I can work around it by 
creating 2 image surfaces and copying one to the other but I would 
expect cairo to be able to handle this with just one surface.

I do the painting by creating a cairo_t for the bitmap, setting the 
surface on that to the image surface, setting up the clip etc and then 
calling cairo_paint.

Is this a known bug? If not where should I report a bug?

Kind regards,

Nicholas Allen

More information about the cairo mailing list