[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