[arch-commits] Commit in cairo/trunk (PKGBUILD color-glyph-source-op.patch)
Jan Steffens
heftig at archlinux.org
Thu Sep 14 19:22:42 UTC 2017
Date: Thursday, September 14, 2017 @ 19:22:41
Author: heftig
Revision: 305566
1.15.8-2
Added:
cairo/trunk/color-glyph-source-op.patch
Modified:
cairo/trunk/PKGBUILD
-----------------------------+
PKGBUILD | 15 ++++++++++++---
color-glyph-source-op.patch | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2017-09-14 19:11:16 UTC (rev 305565)
+++ PKGBUILD 2017-09-14 19:22:41 UTC (rev 305566)
@@ -4,7 +4,7 @@
pkgname=cairo
pkgver=1.15.8
-pkgrel=1
+pkgrel=2
pkgdesc="2D graphics library with support for multiple output devices"
url="https://cairographics.org/"
arch=(i686 x86_64)
@@ -11,9 +11,18 @@
license=('LGPL' 'MPL')
depends=('libpng' 'libxrender' 'libxext' 'fontconfig' 'pixman' 'glib2' 'lzo')
makedepends=('librsvg' 'gtk2' 'poppler-glib' 'libspectre' 'gtk-doc' 'valgrind' 'git')
-source=(https://cairographics.org/snapshots/cairo-$pkgver.tar.xz)
-sha1sums=('07cc2031b74d758299eeee3ec49ecbfbfb85f1c6')
+source=(https://cairographics.org/snapshots/cairo-$pkgver.tar.xz
+ color-glyph-source-op.patch)
+sha1sums=('07cc2031b74d758299eeee3ec49ecbfbfb85f1c6'
+ '5d8efd47038edcf0debf0a43713bba3025f3cffd')
+prepare() {
+ cd $pkgname-$pkgver
+
+ # https://bugs.freedesktop.org/show_bug.cgi?id=102661
+ patch -Np1 -i ../color-glyph-source-op.patch
+}
+
build() {
cd $pkgname-$pkgver
./configure --prefix=/usr \
Added: color-glyph-source-op.patch
===================================================================
--- color-glyph-source-op.patch (rev 0)
+++ color-glyph-source-op.patch 2017-09-14 19:22:41 UTC (rev 305566)
@@ -0,0 +1,39 @@
+From 99427c3f4f6ce7ce3c95c4caa4d2b8ff7c0093d9 Mon Sep 17 00:00:00 2001
+From: Behdad Esfahbod <behdad at behdad.org>
+Date: Tue, 12 Sep 2017 01:35:15 -0400
+Subject: Handle SOURCE and CLEAR operators when painting color glyphs
+
+In cairo, most operators are composited this way:
+
+ ((src IN mask) OP dst) LERP_clip dst
+
+but SOURCE and CLEAR operators are composited this way:
+
+ (src OP dst) LERP_(clip IN mask) dst
+
+(why is this not specified anywhere in the docs or source tree?)
+
+With color glyphs, we were not special-casing SOURCE and CLEAR.
+We do now.
+
+Fixes https://bugs.freedesktop.org/show_bug.cgi?id=102661
+
+diff --git a/src/cairo-surface.c b/src/cairo-surface.c
+index 6f25bd7..35c63d7 100644
+--- a/src/cairo-surface.c
++++ b/src/cairo-surface.c
+@@ -2571,7 +2571,10 @@ composite_one_color_glyph (cairo_surface_t *surface,
+ pattern = cairo_pattern_create_for_surface ((cairo_surface_t *)glyph_surface);
+ cairo_matrix_init_translate (&matrix, - x, - y);
+ cairo_pattern_set_matrix (pattern, &matrix);
+- status = surface->backend->paint (surface, op, pattern, clip);
++ if (op == CAIRO_OPERATOR_SOURCE || op == CAIRO_OPERATOR_CLEAR)
++ status = surface->backend->mask (surface, op, pattern, pattern, clip);
++ else
++ status = surface->backend->paint (surface, op, pattern, clip);
+ }
+
+ return status;
+--
+cgit v0.10.2
+
More information about the arch-commits
mailing list