Date: Saturday, September 9, 2017 @ 19:11:18 Author: heftig Revision: 256709
4.14-1 Added: i3-wm/trunk/0001-Use-OVER-operator-for-drawing-text.patch Modified: i3-wm/trunk/PKGBUILD -----------------------------------------------+ 0001-Use-OVER-operator-for-drawing-text.patch | 35 +++++++++++++ PKGBUILD | 63 ++++++++++++------------ 2 files changed, 67 insertions(+), 31 deletions(-) Added: 0001-Use-OVER-operator-for-drawing-text.patch =================================================================== --- 0001-Use-OVER-operator-for-drawing-text.patch (rev 0) +++ 0001-Use-OVER-operator-for-drawing-text.patch 2017-09-09 19:11:18 UTC (rev 256709) @@ -0,0 +1,35 @@ +From eea280b1f1d9d66c903014fd6703f401eb119a87 Mon Sep 17 00:00:00 2001 +Message-Id: <eea280b1f1d9d66c903014fd6703f401eb119a87.1504913100.git.jan.steff...@gmail.com> +From: "Jan Alexander Steffens (heftig)" <jan.steff...@gmail.com> +Date: Sat, 9 Sep 2017 00:22:13 +0200 +Subject: [PATCH] Use OVER operator for drawing text + +For opaque text, SOURCE is not any different from OVER. However, when +drawing color glyphs (which consist of RGBA pixels instead of strokes) +SOURCE's handling of alpha is not what we want. + +I stumbled across this because cairo 1.15.8 seems to clear the surface +before drawing color emoji if the operator is SOURCE, deleting every- +thing drawn before. Arguably, the area outside the glyph bounds should +not be touched, but even if this is a cairo bug the problem of alpha +within the glyph remains. +--- + libi3/font.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libi3/font.c b/libi3/font.c +index 81091ea74a31da11..aef8427b5396c3d8 100644 +--- a/libi3/font.c ++++ b/libi3/font.c +@@ -105,7 +105,7 @@ static void draw_text_pango(const char *text, size_t text_len, + pango_layout_set_text(layout, text, text_len); + + /* Do the drawing */ +- cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); ++ cairo_set_operator(cr, CAIRO_OPERATOR_OVER); + cairo_set_source_rgb(cr, pango_font_red, pango_font_green, pango_font_blue); + pango_cairo_update_layout(cr, layout); + pango_layout_get_pixel_size(layout, NULL, &height); +-- +2.14.1 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-09-09 18:00:28 UTC (rev 256708) +++ PKGBUILD 2017-09-09 19:11:18 UTC (rev 256709) @@ -2,18 +2,15 @@ # Maintainer: Thorsten Töpper <atsutane...@freethoughts.de> pkgname=i3-wm -_pkgsourcename=i3 -pkgver=4.13 +pkgver=4.14 pkgrel=1 -pkgdesc='An improved dynamic tiling window manager' -arch=('i686' 'x86_64') -url='http://i3wm.org/' -license=('BSD') -replaces=('i3' 'i3bar') -groups=('i3') -depends=('xcb-util-cursor' 'xcb-util-keysyms' 'xcb-util-wm' 'xcb-util-xrm' - 'libev' 'yajl' 'startup-notification' 'pango' 'libxkbcommon-x11') -makedepends=('bison' 'flex') +pkgdesc="An improved dynamic tiling window manager" +url="https://i3wm.org/" +arch=(i686 x86_64) +license=(BSD) +depends=(xcb-util-cursor xcb-util-keysyms xcb-util-wm xcb-util-xrm libev yajl startup-notification + pango libxkbcommon-x11) +makedepends=(bison flex asciidoc xmlto) optdepends=('dmenu: As menu.' 'i3lock: For locking your screen.' 'i3status: To display systeminformation with a bar.' @@ -20,32 +17,36 @@ 'perl: i3-save-tree and i3-dmenu-desktop' 'perl-anyevent-i3: Features like saving the layout.' 'perl-json-xs: Features like saving the layout.') -options=('docs' '!strip') -source=("http://i3wm.org/downloads/${_pkgsourcename}-${pkgver}.tar.bz2" - "http://i3wm.org/downloads/${_pkgsourcename}-${pkgver}.tar.bz2.asc") -md5sums=('08d17dcf1fde665a15f7d411486546ae' - 'SKIP') +groups=(i3) +replaces=(i3 i3bar) +source=("https://i3wm.org/downloads/i3-$pkgver.tar.bz2"{,.asc} + 0001-Use-OVER-operator-for-drawing-text.patch) +sha256sums=('ae3abde3af1b87e269d8aad2348be6f7298338cb8e06bad11cbf91cdbf92a5d6' + 'SKIP' + 'e49e147b1cd06f95188decbbe41f5c3a0aca18d0195750bc3ea16465b4aca563') validpgpkeys=('424E14D703E7C6D43D9D6F364E7160ED4AC8EE1D') # Michael Stapelberg +prepare() { + mkdir build + cd i3-$pkgver + + # https://github.com/i3/i3/pull/2908 + patch -Np1 -i ../0001-Use-OVER-operator-for-drawing-text.patch + + autoreconf -fvi +} + build() { - cd "$srcdir/$_pkgsourcename-$pkgver" - - ./configure --prefix=/usr --sysconfdir=/etc - cd ${CARCH}-pc-linux-gnu - # In order to avoid problems with bison use only a single process - MAKEFLAGS="-j1" - make CPPFLAGS+="-U_FORTIFY_SOURCE" + cd build + ../i3-$pkgver/configure --prefix=/usr --sysconfdir=/etc + make } package() { - cd "$srcdir/$_pkgsourcename-$pkgver/${CARCH}-pc-linux-gnu" - make DESTDIR="$pkgdir/" install - - mkdir -p "${pkgdir}/usr/share/man/man1/" - install -m644 ../man/*.1 "${pkgdir}/usr/share/man/man1/" - - install -Dm644 ../LICENSE \ - ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE + cd build + make DESTDIR="$pkgdir" install + install -Dt "$pkgdir/usr/share/man/man1" -m644 man/*.1 + install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 ../i3-$pkgver/LICENSE } # vim:set ts=2 sw=2 et: