Source code
Revision control
Copy as Markdown
Other Tools
From e429f14657b8bfb2f2b4535223d26c0e921d95b9 Mon Sep 17 00:00:00 2001
From: Jonathan Kew <jkew@mozilla.com>
Date: Wed, 22 Apr 2026 13:00:22 -0700
Subject: [PATCH 16/29] Adapt cairo-quartz for iOS builds
Note: the original upstream changeset also modified cairo-features.h to define
CAIRO_HAS_IMAGE_IO for MOZ_WIDGET_UIKIT builds. That change is maintained
directly in the in-tree cairo-features.h (which is a Mozilla-maintained file
that is not overwritten by upstream imports), so no hunk for it appears here.
---
src/cairo-quartz-image-surface.c | 4 ++++
src/cairo-quartz-surface.c | 2 ++
src/cairo-quartz.h | 4 ++++
3 files changed, 10 insertions(+)
diff --git a/src/cairo-quartz-image-surface.c b/src/cairo-quartz-image-surface.c
index 4f9bc2118..03fea5b37 100644
--- a/src/cairo-quartz-image-surface.c
+++ b/src/cairo-quartz-image-surface.c
@@ -307,7 +307,11 @@ cairo_quartz_image_surface_create (cairo_surface_t *surface)
colorspace = _cairo_quartz_create_color_space (context);
}
else {
+#if CAIRO_HAS_QUARTZ_APPLICATION_SERVICES /* available on macOS but not iOS */
colorspace = CGDisplayCopyColorSpace (CGMainDisplayID ());
+#else
+ colorspace = CGColorSpaceCreateDeviceRGB ();
+#endif
}
bitinfo |= format == CAIRO_FORMAT_ARGB32 ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst;
diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
index 59145fe57..67ad5c7aa 100644
--- a/src/cairo-quartz-surface.c
+++ b/src/cairo-quartz-surface.c
@@ -201,8 +201,10 @@ _cairo_quartz_create_color_space (CGContextRef context)
if (color_space)
return color_space;
}
+#if CAIRO_HAS_QUARTZ_APPLICATION_SERVICES /* available on macOS but not iOS */
if (!color_space)
color_space = CGDisplayCopyColorSpace (CGMainDisplayID ());
+#endif
if (!color_space)
color_space = CGColorSpaceCreateDeviceRGB ();
diff --git a/src/cairo-quartz.h b/src/cairo-quartz.h
index d79d1c102..009e3e9fb 100644
--- a/src/cairo-quartz.h
+++ b/src/cairo-quartz.h
@@ -49,6 +49,10 @@
#include <ApplicationServices/ApplicationServices.h>
#endif
+#if CAIRO_HAS_IMAGE_IO
+#include <ImageIO/ImageIO.h>
+#endif
+
CAIRO_BEGIN_DECLS
cairo_public cairo_surface_t *
--
2.53.0