DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (31ec81b5d7bb)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Bug 572912. Fix surface type passed to cairo_quartz_surface_create during fallback for CGLayers. r=jrmuizel

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
@@ -2026,17 +2026,17 @@ _cairo_quartz_surface_acquire_image (voi
 
     /* ND((stderr, "%p _cairo_quartz_surface_acquire_image\n", surface)); */
 
     status = _cairo_quartz_get_image (surface, image_out);
 
     if (status == CAIRO_INT_STATUS_UNSUPPORTED && surface->cgLayer) {
         /* copy the layer into a Quartz bitmap context so we can get the data */
         cairo_surface_t *tmp =
-            cairo_quartz_surface_create (CAIRO_CONTENT_COLOR_ALPHA,
+            cairo_quartz_surface_create (CAIRO_FORMAT_ARGB32,
                                          surface->extents.width,
                                          surface->extents.height);
         cairo_quartz_surface_t *tmp_surface = (cairo_quartz_surface_t *) tmp;
 
         /* if surface creation failed, we won't have a Quartz surface here */
         if (cairo_surface_get_type (tmp) == CAIRO_SURFACE_TYPE_QUARTZ &&
             tmp_surface->imageSurfaceEquiv) {
             CGContextSaveGState (tmp_surface->cgContext);
@@ -2049,16 +2049,17 @@ _cairo_quartz_surface_acquire_image (voi
             CGContextDrawLayerAtPoint (tmp_surface->cgContext,
                                        CGPointMake (0.0, 0.0),
                                        surface->cgLayer);
             CGContextRestoreGState (tmp_surface->cgContext);
 
             *image_out = (cairo_image_surface_t*)
                 cairo_surface_reference(tmp_surface->imageSurfaceEquiv);
             *image_extra = tmp;
+            status = CAIRO_STATUS_SUCCESS;
         } else {
             cairo_surface_destroy (tmp);
         }
     }
 
     if (status)
 	return _cairo_error (CAIRO_STATUS_NO_MEMORY);