summaryrefslogtreecommitdiffstats
path: root/gfx/cairo/quartz-get-image-performance.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/cairo/quartz-get-image-performance.patch')
-rw-r--r--gfx/cairo/quartz-get-image-performance.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/gfx/cairo/quartz-get-image-performance.patch b/gfx/cairo/quartz-get-image-performance.patch
new file mode 100644
index 000000000..ff3618cf8
--- /dev/null
+++ b/gfx/cairo/quartz-get-image-performance.patch
@@ -0,0 +1,43 @@
+# HG changeset patch
+# User Matt Woodrow <mwoodrow@mozilla.com>
+# 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);