[arch-commits] Commit in xf86-video-intel/trunk (PKGBUILD pd_crash_X_fix.diff)

Laurent Carlier lcarlier at nymeria.archlinux.org
Thu Jun 27 09:00:56 UTC 2013


    Date: Thursday, June 27, 2013 @ 11:00:56
  Author: lcarlier
Revision: 188959

upgpkg: xf86-video-intel 2.21.10-3

fix FS#35830

Added:
  xf86-video-intel/trunk/pd_crash_X_fix.diff
Modified:
  xf86-video-intel/trunk/PKGBUILD

---------------------+
 PKGBUILD            |   10 ++-
 pd_crash_X_fix.diff |  148 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 155 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-06-27 07:04:58 UTC (rev 188958)
+++ PKGBUILD	2013-06-27 09:00:56 UTC (rev 188959)
@@ -4,7 +4,7 @@
 
 pkgname=xf86-video-intel
 pkgver=2.21.10
-pkgrel=2
+pkgrel=3
 arch=(i686 x86_64)
 url="http://xorg.freedesktop.org/"
 license=('custom')
@@ -19,15 +19,19 @@
 options=('!libtool')
 groups=('xorg-drivers' 'xorg')
 source=(${url}/archive/individual/driver/${pkgname}-${pkgver}.tar.bz2
-        firefox_image_fix.diff)
+        firefox_image_fix.diff
+        pd_crash_X_fix.diff)
 sha256sums=('7a4bcad83e8153ab1eec46dfee2412b7b20d087f438af4bf97f460f67c5ca9b6'
-            '33465c66b0a4bca2dfd242c86cb8cb882fbf841e1c2da632a5aa76f9d04b84d1')
+            '33465c66b0a4bca2dfd242c86cb8cb882fbf841e1c2da632a5aa76f9d04b84d1'
+            'cfc83edf018408d9d5b7f5bb329ea364a203eb12bdf537270b89ad85203fbc44')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
 
   # fix image issues in FF+TB, https://bugs.freedesktop.org/show_bug.cgi?id=66059
   patch -Np1 -i ${srcdir}/firefox_image_fix.diff
+  # fix X crash with pd, https://bugs.freedesktop.org/show_bug.cgi?id=66104
+  patch -Np1 -i ${srcdir}/pd_crash_X_fix.diff
 
   ./configure --prefix=/usr \
     --enable-dri

Added: pd_crash_X_fix.diff
===================================================================
--- pd_crash_X_fix.diff	                        (rev 0)
+++ pd_crash_X_fix.diff	2013-06-27 09:00:56 UTC (rev 188959)
@@ -0,0 +1,148 @@
+From c88d911d4209a8ede5ec705ad925383c69182977 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris at chris-wilson.co.uk>
+Date: Mon, 24 Jun 2013 14:30:00 +0100
+Subject: [PATCH] sna: Initialise gc->ops->PolyPoint for miWideDash
+
+The miWideDash may also call PolyPoint rather than emit spans, so make
+sure that we correctly prepare sna_poly_point before calling mi*.
+
+Reported-by: Tobias Brodel <toby.jamesjoy at gmail.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66104
+Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
+---
+ src/sna/sna_accel.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 54 insertions(+), 6 deletions(-)
+
+diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
+index 43d6a67..a3e4ed4 100644
+--- a/src/sna/sna_accel.c
++++ b/src/sna/sna_accel.c
+@@ -5750,6 +5750,39 @@ sna_poly_point__fill_clip_boxes(DrawablePtr drawable, GCPtr gc,
+ }
+ 
+ static void
++sna_poly_point__dash(DrawablePtr drawable, GCPtr gc,
++		     int mode, int n, DDXPointPtr pt)
++{
++	struct sna_fill_spans *data = sna_gc(gc)->priv;
++	struct sna_fill_op *op = data->op;
++
++	if (op->base.u.blt.pixel == gc->fgPixel)
++		sna_poly_point__fill(drawable, gc, mode, n, pt);
++}
++
++static void
++sna_poly_point__dash_clip_extents(DrawablePtr drawable, GCPtr gc,
++				  int mode, int n, DDXPointPtr pt)
++{
++	struct sna_fill_spans *data = sna_gc(gc)->priv;
++	struct sna_fill_op *op = data->op;
++
++	if (op->base.u.blt.pixel == gc->fgPixel)
++		sna_poly_point__fill_clip_extents(drawable, gc, mode, n, pt);
++}
++
++static void
++sna_poly_point__dash_clip_boxes(DrawablePtr drawable, GCPtr gc,
++				  int mode, int n, DDXPointPtr pt)
++{
++	struct sna_fill_spans *data = sna_gc(gc)->priv;
++	struct sna_fill_op *op = data->op;
++
++	if (op->base.u.blt.pixel == gc->fgPixel)
++		sna_poly_point__fill_clip_boxes(drawable, gc, mode, n, pt);
++}
++
++static void
+ sna_fill_spans__fill(DrawablePtr drawable,
+ 		     GCPtr gc, int n,
+ 		     DDXPointPtr pt, int *width, int sorted)
+@@ -8175,16 +8208,20 @@ spans_fallback:
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill_offset;
+ 					else
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill;
++					sna_gc_ops__tmp.PolyPoint = sna_poly_point__fill;
+ 				} else {
+ 					region_maybe_clip(&data.region,
+ 							  gc->pCompositeClip);
+ 					if (RegionNil(&data.region))
+ 						return;
+ 
+-					if (region_is_singular(&data.region))
++					if (region_is_singular(&data.region)) {
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill_clip_extents;
+-					else
++						sna_gc_ops__tmp.PolyPoint = sna_poly_point__fill_clip_extents;
++					} else {
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill_clip_boxes;
++						sna_gc_ops__tmp.PolyPoint = sna_poly_point__fill_clip_boxes;
++					}
+ 				}
+ 				assert(gc->miTranslate);
+ 
+@@ -8200,16 +8237,20 @@ spans_fallback:
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__dash_offset;
+ 					else
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__dash;
++					sna_gc_ops__tmp.PolyPoint = sna_poly_point__dash;
+ 				} else {
+ 					region_maybe_clip(&data.region,
+ 							  gc->pCompositeClip);
+ 					if (RegionNil(&data.region))
+ 						return;
+ 
+-					if (region_is_singular(&data.region))
++					if (region_is_singular(&data.region)) {
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__dash_clip_extents;
+-					else
++						sna_gc_ops__tmp.PolyPoint = sna_poly_point__dash_clip_extents;
++					} else {
+ 						sna_gc_ops__tmp.FillSpans = sna_fill_spans__dash_clip_boxes;
++						sna_gc_ops__tmp.PolyPoint = sna_poly_point__dash_clip_boxes;
++					}
+ 				}
+ 				assert(gc->miTranslate);
+ 
+@@ -8239,6 +8280,7 @@ spans_fallback:
+ 			 */
+ 			sna_gc_ops__tmp.FillSpans = sna_fill_spans__gpu;
+ 			sna_gc_ops__tmp.PolyFillRect = sna_poly_fill_rect__gpu;
++			sna_gc_ops__tmp.PolyPoint = sna_poly_point__gpu;
+ 			gc->ops = &sna_gc_ops__tmp;
+ 
+ 			switch (gc->lineStyle) {
+@@ -9083,16 +9125,20 @@ spans_fallback:
+ 					sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill_offset;
+ 				else
+ 					sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill;
++				sna_gc_ops__tmp.PolyPoint = sna_poly_point__fill;
+ 			} else {
+ 				region_maybe_clip(&data.region,
+ 						  gc->pCompositeClip);
+ 				if (RegionNil(&data.region))
+ 					return;
+ 
+-				if (region_is_singular(&data.region))
++				if (region_is_singular(&data.region)) {
+ 					sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill_clip_extents;
+-				else
++					sna_gc_ops__tmp.PolyPoint = sna_poly_point__fill_clip_extents;
++				} else {
+ 					sna_gc_ops__tmp.FillSpans = sna_fill_spans__fill_clip_boxes;
++					sna_gc_ops__tmp.PolyPoint = sna_poly_point__fill_clip_boxes;
++				}
+ 			}
+ 			assert(gc->miTranslate);
+ 			gc->ops = &sna_gc_ops__tmp;
+@@ -9103,6 +9149,8 @@ spans_fallback:
+ 			fill.done(data.sna, &fill);
+ 		} else {
+ 			sna_gc_ops__tmp.FillSpans = sna_fill_spans__gpu;
++			sna_gc_ops__tmp.PolyFillRect = sna_poly_fill_rect__gpu;
++			sna_gc_ops__tmp.PolyPoint = sna_poly_point__gpu;
+ 			gc->ops = &sna_gc_ops__tmp;
+ 
+ 			for (i = 0; i < n; i++)
+-- 
+1.8.3.1
+




More information about the arch-commits mailing list