From 012beff7badcaf65f80a357f138541f2ed2a00d8 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Wed, 8 Oct 2008 19:32:52 +0200
Subject: [PATCH] xorg-server: add a patch from pkgsrc to workaround pointer
 jumps.

It still happens but not as frequent as before...

--HG--
extra : convert_revision : a262ca7ffd8adb320a54ab67da3fcd4d1eb2e098
---
 templates/xorg-server-dix-getevents-c.diff | 33 ++++++++++++++++++++++
 templates/xorg-server.tmpl                 |  1 +
 2 files changed, 34 insertions(+)
 create mode 100644 templates/xorg-server-dix-getevents-c.diff

diff --git a/templates/xorg-server-dix-getevents-c.diff b/templates/xorg-server-dix-getevents-c.diff
new file mode 100644
index 0000000000..965b9e02a1
--- /dev/null
+++ b/templates/xorg-server-dix-getevents-c.diff
@@ -0,0 +1,33 @@
+$NetBSD: patch-aa,v 1.4 2008/09/18 20:56:01 bjs Exp $
+
+On Friday 04 July 2008, Joerg Sonnenberger wrote:
+> On Thu, Jul 03, 2008 at 07:52:31PM -0600, Sverre Froyen wrote:
+> > I've tracked the jumping cursor issue down to the function
+> > acceleratePointer in dix/getevents.c.
+>
+> All this issues in the past happened because some very smart guys
+> decided to do random broken things from signal context. Which is why
+> this is extremely hard to trace down.
+
+I still see the jumps in 1.4.2.  Perhaps my workaround (attached) could be 
+included until a proper fix is developed?
+
+--- dix/getevents.c.orig	2008-06-29 00:23:13.000000000 -0400
++++ dix/getevents.c
+@@ -613,9 +613,15 @@ GetPointerEvents(xEvent *events, DeviceI
+         clipAxis(pDev, 1, &y);
+     }
+     else {
+-        if (flags & POINTER_ACCELERATE)
++        if (flags & POINTER_ACCELERATE) {
++            int x_in;
++            if (num_valuators >= 1)
++                x_in = valuators[0];
+             acceleratePointer(pDev, first_valuator, num_valuators,
+                               valuators);
++            if (num_valuators >= 1 && valuators[0] < -3000)
++                valuators[0] = x_in;
++        }
+ 
+         if (pDev->coreEvents) {
+             /* Get and convert the core pointer coordinate space into
diff --git a/templates/xorg-server.tmpl b/templates/xorg-server.tmpl
index c1f568c837..c708282668 100755
--- a/templates/xorg-server.tmpl
+++ b/templates/xorg-server.tmpl
@@ -1,6 +1,7 @@
 # Template build file for 'xorg-server'.
 pkgname=xorg-server
 version=1.5.1
+patch_files="$pkgname-dix-getevents-c.diff"
 extract_sufx=".tar.bz2"
 url=http://xorg.freedesktop.org/releases/individual/xserver
 build_style=gnu_configure