diff -r 000000000000 -r 6474c204b198 gfx/cairo/quartz-get-image-performance.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/cairo/quartz-get-image-performance.patch Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,43 @@ +# HG changeset patch +# User Matt Woodrow +# Date 1314162877 -43200 +# Node ID 87458c4670dcd16be5a5715d741ee2ca4cf18d0f +# Parent 95eb700a64591cda694c284a9f8ad08c11e3dd97 +Bug 675837 - Only flush Quartz surfaces on the success paths during cairo_quartz_get_image. r=roc + +diff --git a/gfx/cairo/cairo/src/cairo-quartz-surface.c b/gfx/cairo/cairo/src/cairo-quartz-surface.c +--- a/gfx/cairo/cairo/src/cairo-quartz-surface.c ++++ b/gfx/cairo/cairo/src/cairo-quartz-surface.c +@@ -1909,30 +1909,30 @@ _cairo_quartz_get_image (cairo_quartz_su + unsigned char *imageData; + cairo_image_surface_t *isurf; + + if (IS_EMPTY(surface)) { + *image_out = (cairo_image_surface_t*) cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 0, 0); + return CAIRO_STATUS_SUCCESS; + } + +- CGContextFlush(surface->cgContext); +- + if (surface->imageSurfaceEquiv) { ++ CGContextFlush(surface->cgContext); + *image_out = (cairo_image_surface_t*) cairo_surface_reference(surface->imageSurfaceEquiv); + return CAIRO_STATUS_SUCCESS; + } + + if (_cairo_quartz_is_cgcontext_bitmap_context(surface->cgContext)) { + unsigned int stride; + unsigned int bitinfo; + unsigned int bpc, bpp; + CGColorSpaceRef colorspace; + unsigned int color_comps; + ++ CGContextFlush(surface->cgContext); + imageData = (unsigned char *) CGBitmapContextGetData(surface->cgContext); + + #ifdef USE_10_3_WORKAROUNDS + bitinfo = CGBitmapContextGetAlphaInfo (surface->cgContext); + #else + bitinfo = CGBitmapContextGetBitmapInfo (surface->cgContext); + #endif + stride = CGBitmapContextGetBytesPerRow (surface->cgContext);