Make cairo code work with newer cairo backends that actually use caching

Call cairo_surface_flush() before reading or writing a surface's
pixels directly, and use cairo_surface_mark_dirty() after writing
pixels directly, so we don't read old pixels, and our written pixels
get actually used.
This commit is contained in:
Michael Natterer
2010-06-28 12:23:31 +02:00
parent d2fd8a8dc8
commit fad6053643
5 changed files with 18 additions and 0 deletions

View File

@ -228,6 +228,8 @@ gimp_cairo_surface_create_from_pixbuf (GdkPixbuf *pixbuf)
surface = cairo_image_surface_create (format, width, height);
cairo_surface_flush (surface);
src = gdk_pixbuf_get_pixels (pixbuf);
src_stride = gdk_pixbuf_get_rowstride (pixbuf);
@ -280,5 +282,7 @@ gimp_cairo_surface_create_from_pixbuf (GdkPixbuf *pixbuf)
break;
}
cairo_surface_mark_dirty (surface);
return surface;
}