Index: pkgsrc/graphics/cairo/distinfo =================================================================== RCS file: /cvsroot/pkgsrc/graphics/cairo/distinfo,v retrieving revision 1.90 diff -p -u -r1.90 distinfo --- pkgsrc/graphics/cairo/distinfo 25 May 2021 07:29:41 -0000 1.90 +++ pkgsrc/graphics/cairo/distinfo 28 May 2021 10:30:27 -0000 @@ -10,3 +10,4 @@ SHA1 (patch-ac) = 1785bbef6bcab4781bf89e SHA1 (patch-ad) = a1068a37113b162ccfe14d7f1bd0baa9df7e5530 SHA1 (patch-src_cairo-ft-font.c) = 97288d79380473869f1049c1d8955a2f6fa3d178 SHA1 (patch-src_cairo-image-compositor.c) = 83337d8211083d77b061c43b69da2b61080776d9 +SHA1 (patch-src_cairo-image-surface.c) = 90d4c5ecac11a89d18a2ebb92a59ec827677aa72 Index: pkgsrc/graphics/cairo/patches/patch-src_cairo-image-surface.c =================================================================== RCS file: pkgsrc/graphics/cairo/patches/patch-src_cairo-image-surface.c diff -N pkgsrc/graphics/cairo/patches/patch-src_cairo-image-surface.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pkgsrc/graphics/cairo/patches/patch-src_cairo-image-surface.c 28 May 2021 10:30:27 -0000 @@ -0,0 +1,36 @@ +$NetBSD$ + +Correctly support byte-swapped 32-bpp bitmap formats, that are typically +found on X servers running on aarch64eb and armeb. + +--- src/cairo-image-surface.c.orig 2018-08-17 10:10:53.000000000 +0900 ++++ src/cairo-image-surface.c 2021-05-25 23:13:01.917678183 +0900 +@@ -213,9 +213,11 @@ _pixman_format_from_masks (cairo_format_ + + if (masks->red_mask) { + if (masks->red_mask > masks->blue_mask) +- format_type = PIXMAN_TYPE_ARGB; ++ format_type = masks->alpha_mask > masks->red_mask ? ++ PIXMAN_TYPE_ARGB : PIXMAN_TYPE_RGBA; + else +- format_type = PIXMAN_TYPE_ABGR; ++ format_type = masks->alpha_mask > masks->red_mask ? ++ PIXMAN_TYPE_ABGR : PIXMAN_TYPE_BGRA; + } else if (masks->alpha_mask) { + format_type = PIXMAN_TYPE_A; + } else { +@@ -282,6 +284,14 @@ _pixman_format_to_masks (pixman_format_c + masks->alpha_mask = MASK (a); + return TRUE; + #endif ++#ifdef PIXMAN_TYPE_RGBA ++ case PIXMAN_TYPE_RGBA: ++ masks->red_mask = MASK (r) << (masks->bpp - r); ++ masks->green_mask = MASK (g) << (masks->bpp - r - g); ++ masks->blue_mask = MASK (b) << (masks->bpp - r - g - b); ++ masks->alpha_mask = MASK (a); ++ return TRUE; ++#endif + case PIXMAN_TYPE_A: + masks->alpha_mask = MASK (a); + masks->red_mask = 0;