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:
@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user