gfx/cairo/quartz-check-imageSurfaceEquiv.patch

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/cairo/quartz-check-imageSurfaceEquiv.patch	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,36 @@
     1.4 +From: Daniel Holbert <dholbert@cs.stanford.edu>
     1.5 +Bug 612662 patch 3: Drop cairo_quartz_surface_t's "imageSurfaceEquiv" member if we fail to create it. r=roc a=blocking-final+
     1.6 +
     1.7 +diff --git a/gfx/cairo/cairo/src/cairo-quartz-surface.c b/gfx/cairo/cairo/src/cairo-quartz-surface.c
     1.8 +--- a/gfx/cairo/cairo/src/cairo-quartz-surface.c
     1.9 ++++ b/gfx/cairo/cairo/src/cairo-quartz-surface.c
    1.10 +@@ -3152,17 +3152,28 @@ cairo_quartz_surface_create (cairo_forma
    1.11 +     if (surf->base.status) {
    1.12 + 	CGContextRelease (cgc);
    1.13 + 	free (imageData);
    1.14 + 	// create_internal will have set an error
    1.15 + 	return (cairo_surface_t*) surf;
    1.16 +     }
    1.17 + 
    1.18 +     surf->imageData = imageData;
    1.19 +-    surf->imageSurfaceEquiv = cairo_image_surface_create_for_data (imageData, format, width, height, stride);
    1.20 ++
    1.21 ++    cairo_surface_t* tmpImageSurfaceEquiv =
    1.22 ++      cairo_image_surface_create_for_data (imageData, format,
    1.23 ++                                           width, height, stride);
    1.24 ++
    1.25 ++    if (cairo_surface_status (tmpImageSurfaceEquiv)) {
    1.26 ++        // Tried & failed to create an imageSurfaceEquiv!
    1.27 ++        cairo_surface_destroy (tmpImageSurfaceEquiv);
    1.28 ++        surf->imageSurfaceEquiv = NULL;
    1.29 ++    } else {
    1.30 ++        surf->imageSurfaceEquiv = tmpImageSurfaceEquiv;
    1.31 ++    }
    1.32 + 
    1.33 +     return (cairo_surface_t *) surf;
    1.34 + }
    1.35 + 
    1.36 + /**
    1.37 +  * cairo_quartz_surface_get_cg_context
    1.38 +  * @surface: the Cairo Quartz surface
    1.39 +  *

mercurial