[arch-commits] Commit in cairo/trunk (3 files)

jgc at nymeria.archlinux.org jgc at nymeria.archlinux.org
Wed Jan 23 11:37:23 UTC 2013


    Date: Wednesday, January 23, 2013 @ 12:37:23
  Author: jgc
Revision: 175888

upgpkg: cairo 1.12.10-2

Undo two upstream commits to fix resizing issues as described in FS#33463

Added:
  cairo/trunk/revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch
  cairo/trunk/revert-xlib-map-to-image-requires-an-extents.patch
Modified:
  cairo/trunk/PKGBUILD

-------------------------------------------------------------------+
 PKGBUILD                                                          |   12 
 revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch |  144 ++++++++++
 revert-xlib-map-to-image-requires-an-extents.patch                |   24 +
 3 files changed, 177 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-01-23 11:14:04 UTC (rev 175887)
+++ PKGBUILD	2013-01-23 11:37:23 UTC (rev 175888)
@@ -4,7 +4,7 @@
 
 pkgname=cairo
 pkgver=1.12.10
-pkgrel=1
+pkgrel=2
 pkgdesc="Cairo vector graphics library"
 arch=(i686 x86_64)
 license=('LGPL' 'MPL')
@@ -15,11 +15,17 @@
 provides=('cairo-xcb')
 replaces=('cairo-xcb')
 options=('!libtool')
-source=(http://cairographics.org/releases/$pkgname-$pkgver.tar.xz)
-sha1sums=('be06d5aaa272bbbd08380f71ca710d5612881493')
+source=(http://cairographics.org/releases/$pkgname-$pkgver.tar.xz
+  	revert-xlib-map-to-image-requires-an-extents.patch
+  	revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch)
+sha1sums=('be06d5aaa272bbbd08380f71ca710d5612881493'
+          '8bc096dd16a885ad041cb2137a64757f32d1cc88'
+          'fd8ffd9aba3679c344e4f25494f199a51b0ae62c')
 
 build() {
   cd "$srcdir/$pkgname-$pkgver"
+  patch -Np1 -R -i ../revert-xlib-map-to-image-requires-an-extents.patch
+  patch -Np1 -R -i ../revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch
   ./configure --prefix=/usr \
 	--sysconfdir=/etc \
 	--localstatedir=/var \

Added: revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch
===================================================================
--- revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch	                        (rev 0)
+++ revert-xlib-Simplify-source-creation-by-use-of-map-to-image.patch	2013-01-23 11:37:23 UTC (rev 175888)
@@ -0,0 +1,144 @@
+From a73e7ff0186176bc82cd3ae1432c054c1fd3aebd Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris at chris-wilson.co.uk>
+Date: Sun, 06 Jan 2013 11:29:27 +0000
+Subject: xlib: Simplify source creation by use of map-to-image
+
+We were open-coding the functionality of map-to-image inside the source
+creation routines. so refactor to actually use map-to-image instead.
+
+Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
+---
+diff --git a/src/cairo-xlib-source.c b/src/cairo-xlib-source.c
+index e312222..d08052a 100644
+--- a/src/cairo-xlib-source.c
++++ b/src/cairo-xlib-source.c
+@@ -898,9 +898,6 @@ surface_source (cairo_xlib_surface_t *dst,
+     cairo_surface_pattern_t local_pattern;
+     cairo_status_t status;
+     cairo_rectangle_int_t upload, limit;
+-    cairo_matrix_t m;
+-    pixman_format_code_t format;
+-    int draw_x, draw_y;
+ 
+     src = pattern->surface;
+     if (src->type == CAIRO_SURFACE_TYPE_IMAGE &&
+@@ -910,7 +907,6 @@ surface_source (cairo_xlib_surface_t *dst,
+ 
+ 	cairo_surface_reference (src);
+ 
+-prepare_shm_image:
+ 	proxy = malloc (sizeof(*proxy));
+ 	if (unlikely (proxy == NULL)) {
+ 	    cairo_surface_destroy (src);
+@@ -954,46 +950,47 @@ prepare_shm_image:
+ 	}
+     }
+ 
+-    if (_cairo_surface_is_image (src))
+-	format = ((cairo_image_surface_t *)src)->pixman_format;
+-    else
+-	format = _cairo_format_to_pixman_format_code (_cairo_format_from_content (src->content));
+-    src = _cairo_xlib_surface_create_shm (dst, format,
+-					  upload.width, upload.height);
+-    if (src == NULL) {
+-	if (_cairo_surface_is_image (pattern->surface)) {
+-	    draw_x = upload.x;
+-	    draw_y = upload.y;
+-	    src = cairo_surface_reference (pattern->surface);
+-	    goto skip_paint;
+-	}
+-
+-	src = _cairo_image_surface_create_with_pixman_format (NULL,
+-							      format,
+-							      upload.width,
+-							      upload.height,
+-							      0);
++    xsrc = (cairo_xlib_surface_t *)
++	    _cairo_surface_create_similar_scratch (&dst->base,
++						   src->content,
++						   upload.width,
++						   upload.height);
++    if (xsrc->base.type != CAIRO_SURFACE_TYPE_XLIB) {
++	cairo_surface_destroy (src);
++	cairo_surface_destroy (&xsrc->base);
++	return None;
+     }
+ 
+-    _cairo_pattern_init_for_surface (&local_pattern, pattern->surface);
+-    cairo_matrix_init_translate (&local_pattern.base.matrix,
+-				 upload.x, upload.y);
++    if (_cairo_surface_is_image (src)) {
++	status = _cairo_xlib_surface_draw_image (xsrc, (cairo_image_surface_t *)src,
++						 upload.x, upload.y,
++						 upload.width, upload.height,
++						 0, 0);
++    } else {
++	cairo_image_surface_t *image;
+ 
+-    status = _cairo_surface_paint (src,
+-				   CAIRO_OPERATOR_SOURCE,
+-				   &local_pattern.base,
+-				   NULL);
+-    _cairo_pattern_fini (&local_pattern.base);
++	image = _cairo_surface_map_to_image (&xsrc->base, NULL);
+ 
+-    if (unlikely (status)) {
+-	cairo_surface_destroy (src);
+-	return _cairo_surface_create_in_error (status);
++	_cairo_pattern_init_for_surface (&local_pattern, pattern->surface);
++	cairo_matrix_init_translate (&local_pattern.base.matrix,
++				     upload.x, upload.y);
++
++	status = _cairo_surface_paint (&image->base,
++				       CAIRO_OPERATOR_SOURCE,
++				       &local_pattern.base,
++				       NULL);
++	_cairo_pattern_fini (&local_pattern.base);
++
++	status = _cairo_surface_unmap_image (&xsrc->base, image);
++	if (unlikely (status)) {
++	    cairo_surface_destroy (src);
++	    return _cairo_surface_create_in_error (status);
++	}
+     }
+ 
+-    draw_x = draw_y = 0;
+-skip_paint:
+     _cairo_pattern_init_static_copy (&local_pattern.base, &pattern->base);
+     if (upload.x | upload.y) {
++	cairo_matrix_t m;
+ 	cairo_matrix_init_translate (&m, -upload.x, -upload.y);
+ 	cairo_matrix_multiply (&local_pattern.base.matrix,
+ 			       &local_pattern.base.matrix,
+@@ -1001,29 +998,6 @@ skip_paint:
+     }
+ 
+     *src_x = *src_y = 0;
+-    if (src->device == dst->base.device &&
+-	_cairo_xlib_shm_surface_get_pixmap (src)) {
+-	    pattern = &local_pattern;
+-	    goto prepare_shm_image;
+-    }
+-
+-    xsrc = (cairo_xlib_surface_t *)
+-	    _cairo_surface_create_similar_scratch (&dst->base,
+-						   src->content,
+-						   upload.width,
+-						   upload.height);
+-    if (xsrc->base.type != CAIRO_SURFACE_TYPE_XLIB) {
+-	cairo_surface_destroy (src);
+-	cairo_surface_destroy (&xsrc->base);
+-	return None;
+-    }
+-
+-    status = _cairo_xlib_surface_draw_image (xsrc, (cairo_image_surface_t *)src,
+-					     draw_x, draw_y,
+-					     upload.width, upload.height,
+-					     0, 0);
+-    cairo_surface_destroy (src);
+-
+     _cairo_xlib_surface_ensure_picture (xsrc);
+     if (! picture_set_properties (xsrc->display,
+ 				  xsrc->picture,
+--
+cgit v0.9.0.2-2-gbebe

Added: revert-xlib-map-to-image-requires-an-extents.patch
===================================================================
--- revert-xlib-map-to-image-requires-an-extents.patch	                        (rev 0)
+++ revert-xlib-map-to-image-requires-an-extents.patch	2013-01-23 11:37:23 UTC (rev 175888)
@@ -0,0 +1,24 @@
+From dd20c1f4d6419238bbb37fb93a48986f83c6e6c2 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris at chris-wilson.co.uk>
+Date: Wed, 09 Jan 2013 12:38:09 +0000
+Subject: xlib: map-to-image requires an extents
+
+Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
+---
+diff --git a/src/cairo-xlib-source.c b/src/cairo-xlib-source.c
+index d08052a..0689d82 100644
+--- a/src/cairo-xlib-source.c
++++ b/src/cairo-xlib-source.c
+@@ -968,8 +968,9 @@ surface_source (cairo_xlib_surface_t *dst,
+ 						 0, 0);
+     } else {
+ 	cairo_image_surface_t *image;
++	cairo_rectangle_int_t map_extents = { 0,0, upload.width,upload.height };
+ 
+-	image = _cairo_surface_map_to_image (&xsrc->base, NULL);
++	image = _cairo_surface_map_to_image (&xsrc->base, &map_extents);
+ 
+ 	_cairo_pattern_init_for_surface (&local_pattern, pattern->surface);
+ 	cairo_matrix_init_translate (&local_pattern.base.matrix,
+--
+cgit v0.9.0.2-2-gbebe




More information about the arch-commits mailing list