Imported Debian patch 2:1.11.4-0ubuntu10.10
authorBryce Harrington <bryce@ubuntu.com>
Sat, 17 Nov 2012 00:04:30 +0000 (16:04 -0800)
committerXavier Boudet <x-boudet@ti.com>
Fri, 4 Jan 2013 11:08:11 +0000 (12:08 +0100)
debian/changelog
debian/patches/233-xf86events-valgrind.patch [new file with mode: 0644]
debian/patches/235-composite-tracking.diff [new file with mode: 0644]
debian/patches/237-dix-set-the-device-transformation-matrix.patch [new file with mode: 0644]
debian/patches/series

index 4e066c9a57140f21571a8b1de1f12aff7f37ab65..00047c06f63d4474335954ffa988a749528a898e 100644 (file)
@@ -1,3 +1,21 @@
+xorg-server (2:1.11.4-0ubuntu10.10) precise-proposed; urgency=low
+
+  * Add 237-dix-set-the-device-transformation-matrix.patch: Fix pointer
+    jumping with absolute pointing device.  Initializes device
+    transformation matrix to an identity matrix.  Thanks to a7x.
+    (LP: #1041063)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 16 Nov 2012 16:04:30 -0800
+
+xorg-server (2:1.11.4-0ubuntu10.9) precise-proposed; urgency=low
+
+  [ Maarten Lankhorst ]
+  * add 233-xf86events-valgrind.patch to fix a xserver corruption
+    when acpid is stopped before Xorg is. (LP: #1070481)
+  * add 235-composite-tracking.diff to fix exa corruption. (LP: #1010794)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Thu, 25 Oct 2012 15:44:23 +0300
+
 xorg-server (2:1.11.4-0ubuntu10.8) precise-proposed; urgency=low
 
   * Add upstream patches to avoid seg fault in case the user is running with
diff --git a/debian/patches/233-xf86events-valgrind.patch b/debian/patches/233-xf86events-valgrind.patch
new file mode 100644 (file)
index 0000000..f2fbcfb
--- /dev/null
@@ -0,0 +1,19 @@
+diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
+index 41ffabd..6082bee 100644
+--- a/hw/xfree86/common/xf86Events.c
++++ b/hw/xfree86/common/xf86Events.c
+@@ -270,10 +270,10 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
+       }
+     }
+-    if (err >= 0) { /* we don't want the handlers called if select() */
+-      IHPtr ih;   /* returned with an error condition, do we?      */
+-      
+-      for (ih = InputHandlers; ih; ih = ih->next) {
++    if (err >= 0) {       /* we don't want the handlers called if select() */
++        IHPtr ih, ih_tmp; /* returned with an error condition, do we?      */
++
++        nt_list_for_each_entry_safe(ih, ih_tmp, InputHandlers, next) {
+           if (ih->enabled && ih->fd >= 0 && ih->ihproc &&
+               (FD_ISSET(ih->fd, ((fd_set *)pReadmask)) != 0)) {
+               ih->ihproc(ih->fd, ih->data);
diff --git a/debian/patches/235-composite-tracking.diff b/debian/patches/235-composite-tracking.diff
new file mode 100644 (file)
index 0000000..20d2ce2
--- /dev/null
@@ -0,0 +1,63 @@
+diff --git a/exa/exa_priv.h b/exa/exa_priv.h
+index 70de4bd..60aa328 100644
+--- a/exa/exa_priv.h
++++ b/exa/exa_priv.h
+@@ -206,6 +206,7 @@ typedef struct {
+     RegionRec srcReg;
+     RegionRec maskReg;
+     PixmapPtr srcPix;
++    PixmapPtr maskPix;
+ } ExaScreenPrivRec, *ExaScreenPrivPtr;
+diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
+index 219f903..7d83d15 100644
+--- a/exa/exa_unaccel.c
++++ b/exa/exa_unaccel.c
+@@ -448,6 +448,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
+     RegionPtr dst;
+     int xoff, yoff;
++    if (pExaScr->srcPix == pPix)
++        dst = &pExaScr->srcReg;
++    else if (pExaScr->maskPix == pPix)
++        dst = &pExaScr->maskReg;
++    else
++        return;
++
+     exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
+     box.x1 = x + xoff;
+@@ -455,9 +462,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
+     box.x2 = box.x1 + width;
+     box.y2 = box.y1 + height;
+-    dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg :
+-      &pExaScr->maskReg;
+-
+     RegionInit(&reg, &box, 1);
+     RegionUnion(dst, dst, &reg);
+     RegionUninit(&reg);
+@@ -506,17 +510,20 @@ ExaPrepareCompositeReg(ScreenPtr  pScreen,
+           RegionTranslate(pSrc->pCompositeClip,
+                            -pSrc->pDrawable->x,
+                            -pSrc->pDrawable->y);
+-    }
++    } else
++        pExaScr->srcPix = NULL;
+     if (pMask && pMask->pDrawable) {
+       pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
+       RegionNull(&pExaScr->maskReg);
+       maskReg = &pExaScr->maskReg;
++      pExaScr->maskPix = pMaskPix;
+       if (pMask != pDst && pMask != pSrc)
+           RegionTranslate(pMask->pCompositeClip,
+                            -pMask->pDrawable->x,
+                            -pMask->pDrawable->y);
+-    }
++    } else
++        pExaScr->maskPix = NULL;
+     RegionTranslate(pDst->pCompositeClip,
+                    -pDst->pDrawable->x,
diff --git a/debian/patches/237-dix-set-the-device-transformation-matrix.patch b/debian/patches/237-dix-set-the-device-transformation-matrix.patch
new file mode 100644 (file)
index 0000000..92a9f57
--- /dev/null
@@ -0,0 +1,42 @@
+From 3d1051aecbb1955084804133cacd12c7f696833a Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu, 20 Sep 2012 05:56:39 +1000
+Subject: [PATCH] dix: set the device transformation matrix
+
+The property handler is registered after setting the property, so
+dev->transform remains as all-zeros. That causes pixman_f_transform_invert()
+to fail (in transformAbsolute()) and invert remains as garbage. This
+may then cause a cursor jump to 0,0.
+
+Since the axes are not yet initialized here and we need to allow for drivers
+changing the matrix, we cannot use the property handler for matrix
+initialization, essentially duplicating the code.
+
+Triggered by the fix to (#49347) in 749a593e49adccdf1225be28a521412ec85333f4
+
+https://bugzilla.redhat.com/show_bug.cgi?id=852841
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Chase Douglas <chase.douglas@ubuntu.com>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+---
+ dix/devices.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dix/devices.c b/dix/devices.c
+index 9cf04ed..66d4406 100644
+--- a/dix/devices.c
++++ b/dix/devices.c
+@@ -306,6 +306,9 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
+     /* unity matrix */
+     memset(transform, 0, sizeof(transform));
+     transform[0] = transform[4] = transform[8] = 1.0f;
++    dev->transform.m[0][0] = 1.0;
++    dev->transform.m[1][1] = 1.0;
++    dev->transform.m[2][2] = 1.0;
+     XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM),
+                            XIGetKnownProperty(XATOM_FLOAT), 32,
+-- 
+1.7.11.3
+
index 0279297a352a21314c77e7b88dcc9a13b518a7ff..099965c1d85c75ce673bf1c2b40cf718a00ac4a3 100644 (file)
@@ -33,6 +33,8 @@
 228_log-format-fix.patch
 229_randr_first_check_pScrPriv_before_using_the_pointer.patch
 230_randr_catch_two_more_potential_unset_rrScrPriv_uses.patch
+233-xf86events-valgrind.patch
+235-composite-tracking.diff
 
 ## Input Stack Patches (from xserver 1.12) ##
 500_pointer_barrier_thresholds.diff
@@ -52,3 +54,4 @@
 #515-dix-disable-all-devices-before-shutdown.patch
 516-dix-dont-emulate-scroll-events-for-non-existing-axes.patch
 
+237-dix-set-the-device-transformation-matrix.patch