You've already forked linux-packaging-mono
Imported Upstream version 6.12.0.91
Former-commit-id: eb02b520ce64f8414ed36812659a32ec82002572
This commit is contained in:
parent
0b380204a4
commit
3308852af0
122
external/bockbuild/packages/patches/cairo-bigsur.patch
vendored
Normal file
122
external/bockbuild/packages/patches/cairo-bigsur.patch
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
|
||||
index 1e2bbec..f096e8d 100644
|
||||
--- a/src/cairo-quartz-surface.c
|
||||
+++ b/src/cairo-quartz-surface.c
|
||||
@@ -211,8 +211,13 @@ CairoQuartzCreateCGImage (cairo_format_t format,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ void *data_copy = malloc (height * stride);
|
||||
+ if (unlikely (!data_copy))
|
||||
+ return NULL;
|
||||
+ memcpy (data_copy, data, height * stride);
|
||||
+
|
||||
dataProvider = CGDataProviderCreateWithData (releaseInfo,
|
||||
- data,
|
||||
+ data_copy,
|
||||
height * stride,
|
||||
releaseCallback);
|
||||
|
||||
@@ -768,18 +773,10 @@ CairoQuartzCreateGradientFunction (const cairo_gradient_pattern_t *gradient,
|
||||
|
||||
/* Obtain a CGImageRef from a #cairo_surface_t * */
|
||||
|
||||
-typedef struct {
|
||||
- cairo_surface_t *surface;
|
||||
- cairo_image_surface_t *image_out;
|
||||
- void *image_extra;
|
||||
-} quartz_source_image_t;
|
||||
-
|
||||
static void
|
||||
DataProviderReleaseCallback (void *info, const void *data, size_t size)
|
||||
{
|
||||
- quartz_source_image_t *source_img = info;
|
||||
- _cairo_surface_release_source_image (source_img->surface, source_img->image_out, source_img->image_extra);
|
||||
- free (source_img);
|
||||
+ free (data);
|
||||
}
|
||||
|
||||
static cairo_status_t
|
||||
@@ -791,7 +788,6 @@ _cairo_surface_to_cgimage (cairo_surface_t *source,
|
||||
CGImageRef *image_out)
|
||||
{
|
||||
cairo_status_t status;
|
||||
- quartz_source_image_t *source_img;
|
||||
cairo_image_surface_t *image_surface;
|
||||
|
||||
if (source->backend && source->backend->type == CAIRO_SURFACE_TYPE_QUARTZ_IMAGE) {
|
||||
@@ -814,11 +810,8 @@ _cairo_surface_to_cgimage (cairo_surface_t *source,
|
||||
}
|
||||
}
|
||||
|
||||
- source_img = malloc (sizeof (quartz_source_image_t));
|
||||
- if (unlikely (source_img == NULL))
|
||||
- return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
-
|
||||
- source_img->surface = source;
|
||||
+ cairo_image_surface_t *cimage_out;
|
||||
+ void *image_extra;
|
||||
|
||||
if (source->type == CAIRO_SURFACE_TYPE_RECORDING) {
|
||||
image_surface = (cairo_image_surface_t *)
|
||||
@@ -826,7 +819,6 @@ _cairo_surface_to_cgimage (cairo_surface_t *source,
|
||||
if (unlikely (image_surface->base.status)) {
|
||||
status = image_surface->base.status;
|
||||
cairo_surface_destroy (&image_surface->base);
|
||||
- free (source_img);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -836,40 +828,35 @@ _cairo_surface_to_cgimage (cairo_surface_t *source,
|
||||
NULL);
|
||||
if (unlikely (status)) {
|
||||
cairo_surface_destroy (&image_surface->base);
|
||||
- free (source_img);
|
||||
return status;
|
||||
}
|
||||
|
||||
- source_img->image_out = image_surface;
|
||||
- source_img->image_extra = NULL;
|
||||
+ cimage_out = image_surface;
|
||||
+ image_extra = NULL;
|
||||
|
||||
cairo_matrix_init_identity (matrix);
|
||||
}
|
||||
else {
|
||||
- status = _cairo_surface_acquire_source_image (source_img->surface,
|
||||
- &source_img->image_out,
|
||||
- &source_img->image_extra);
|
||||
+ status = _cairo_surface_acquire_source_image (source,
|
||||
+ &cimage_out,
|
||||
+ &image_extra);
|
||||
if (unlikely (status)) {
|
||||
- free (source_img);
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
- if (source_img->image_out->width == 0 || source_img->image_out->height == 0) {
|
||||
+ if (cimage_out->width == 0 || cimage_out->height == 0) {
|
||||
*image_out = NULL;
|
||||
- DataProviderReleaseCallback (source_img,
|
||||
- source_img->image_out->data,
|
||||
- source_img->image_out->height * source_img->image_out->stride);
|
||||
} else {
|
||||
- *image_out = CairoQuartzCreateCGImage (source_img->image_out->format,
|
||||
- source_img->image_out->width,
|
||||
- source_img->image_out->height,
|
||||
- source_img->image_out->stride,
|
||||
- source_img->image_out->data,
|
||||
+ *image_out = CairoQuartzCreateCGImage (cimage_out->format,
|
||||
+ cimage_out->width,
|
||||
+ cimage_out->height,
|
||||
+ cimage_out->stride,
|
||||
+ cimage_out->data,
|
||||
TRUE,
|
||||
NULL,
|
||||
DataProviderReleaseCallback,
|
||||
- source_img);
|
||||
+ NULL);
|
||||
|
||||
/* TODO: differentiate memory error and unsupported surface type */
|
||||
if (unlikely (*image_out == NULL))
|
Reference in New Issue
Block a user