xorg-server 1.4.2
- drop merged patches - Add a quirk to set the synaptics resolution to 0 by default. The pre-scale patch in the server clashes with synaptics inaccurate resolution numbers, causing the touchpad movement to be stunted.
This commit is contained in:
parent
a47080a456
commit
d706dd8e98
1
.gitignore
vendored
1
.gitignore
vendored
@ -26,3 +26,4 @@ xorg-server-1.9.1.tar.bz2
|
|||||||
/xorg-server-1.14.0.tar.bz2
|
/xorg-server-1.14.0.tar.bz2
|
||||||
/xorg-server-1.14.1.tar.bz2
|
/xorg-server-1.14.1.tar.bz2
|
||||||
/xorg-server-1.14.1.901.tar.bz2
|
/xorg-server-1.14.1.901.tar.bz2
|
||||||
|
/xorg-server-1.14.2.tar.bz2
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
From bf115aa906795df872104083c1187c126c3b1d76 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Date: Wed, 17 Apr 2013 19:47:42 +1000
|
|
||||||
Subject: [PATCH 01/35] dix: plug memory leak in freeing TouchClass
|
|
||||||
|
|
||||||
==15562== 1,800 bytes in 1 blocks are definitely lost in loss record 298 of 330
|
|
||||||
==15562== at 0x4A06B6F: calloc (vg_replace_malloc.c:593)
|
|
||||||
==15562== by 0x4312C7: InitTouchClassDeviceStruct (devices.c:1644)
|
|
||||||
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
|
||||||
(cherry picked from commit 7d722796c678532e8c5897c673c43184da353f44)
|
|
||||||
---
|
|
||||||
dix/devices.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/dix/devices.c b/dix/devices.c
|
|
||||||
index be236dd..85961a0 100644
|
|
||||||
--- a/dix/devices.c
|
|
||||||
+++ b/dix/devices.c
|
|
||||||
@@ -795,6 +795,7 @@ FreeDeviceClass(int type, pointer *class)
|
|
||||||
free((*t)->touches[i].valuators);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ free((*t)->touches);
|
|
||||||
free((*t));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.2.1
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
From 8cc686735296f1ff32089e64f78dfee46b8e7149 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Date: Thu, 9 May 2013 14:30:49 +1000
|
|
||||||
Subject: [PATCH 02/35] dix: don't overwrite proximity/focus classes
|
|
||||||
|
|
||||||
InitPointerClassDeviceStruct/InitKeyboardDeviceStruct allocate a
|
|
||||||
proximity/focus class, respectively. If a driver calls
|
|
||||||
InitFocusClassDeviceStruct or InitProximityClassDeviceStruct beforehand,
|
|
||||||
the previously allocated class is overwritten, leaking the memory.
|
|
||||||
|
|
||||||
Neither takes a parameter other than the device, so we can simply skip
|
|
||||||
initialising it if we already have one.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
(cherry picked from commit 8a88b0ab52ba375ae84463a90503db88af10e368)
|
|
||||||
---
|
|
||||||
dix/devices.c | 2 +-
|
|
||||||
xkb/xkbInit.c | 3 ++-
|
|
||||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dix/devices.c b/dix/devices.c
|
|
||||||
index 85961a0..b2db4aa 100644
|
|
||||||
--- a/dix/devices.c
|
|
||||||
+++ b/dix/devices.c
|
|
||||||
@@ -1366,7 +1366,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
|
|
||||||
valc->numMotionEvents = numMotionEvents;
|
|
||||||
valc->motionHintWindow = NullWindow;
|
|
||||||
|
|
||||||
- if (mode & OutOfProximity)
|
|
||||||
+ if ((mode & OutOfProximity) && !dev->proximity)
|
|
||||||
InitProximityClassDeviceStruct(dev);
|
|
||||||
|
|
||||||
dev->valuator = valc;
|
|
||||||
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
|
|
||||||
index 4e8e267..ed01114 100644
|
|
||||||
--- a/xkb/xkbInit.c
|
|
||||||
+++ b/xkb/xkbInit.c
|
|
||||||
@@ -574,7 +574,8 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
|
|
||||||
XkbUpdateActions(dev, xkb->min_key_code, XkbNumKeys(xkb), &changes,
|
|
||||||
&check, &cause);
|
|
||||||
|
|
||||||
- InitFocusClassDeviceStruct(dev);
|
|
||||||
+ if (!dev->focus)
|
|
||||||
+ InitFocusClassDeviceStruct(dev);
|
|
||||||
|
|
||||||
xkbi->kbdProc = ctrl_func;
|
|
||||||
dev->kbdfeed->BellProc = bell_func;
|
|
||||||
--
|
|
||||||
1.8.2.1
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
|||||||
From 57f6dbb3032b934a39c15cd1980b345f477ce1e6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Morell <rmorell@nvidia.com>
|
|
||||||
Date: Thu, 9 May 2013 13:09:02 -0700
|
|
||||||
Subject: [PATCH 03/35] os: Reset input buffer's 'ignoreBytes' field
|
|
||||||
|
|
||||||
If a client sends a request larger than maxBigRequestSize, the server is
|
|
||||||
supposed to ignore it.
|
|
||||||
|
|
||||||
Before commit cf88363d, the server would simply disconnect the client. After
|
|
||||||
that commit, it attempts to gracefully ignore the request by remembering how
|
|
||||||
long the client specified the request to be, and ignoring that many bytes.
|
|
||||||
However, if a client sends a BigReq header with a large size and disconnects
|
|
||||||
before actually sending the rest of the specified request, the server will
|
|
||||||
reuse the ConnectionInput buffer without resetting the ignoreBytes field. This
|
|
||||||
makes the server ignore new X clients' requests.
|
|
||||||
|
|
||||||
This fixes that behavior by resetting the ignoreBytes field when putting the
|
|
||||||
ConnectionInput buffer back on the FreeInputs list.
|
|
||||||
|
|
||||||
Signed-off-by: Robert Morell <rmorell@nvidia.com>
|
|
||||||
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
(cherry picked from commit 67c66606c760c263d7a4c2d1bba43ed6225a4e7c)
|
|
||||||
---
|
|
||||||
os/io.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/os/io.c b/os/io.c
|
|
||||||
index 2f091c4..0d980ab 100644
|
|
||||||
--- a/os/io.c
|
|
||||||
+++ b/os/io.c
|
|
||||||
@@ -1063,6 +1063,7 @@ FreeOsBuffers(OsCommPtr oc)
|
|
||||||
oci->bufptr = oci->buffer;
|
|
||||||
oci->bufcnt = 0;
|
|
||||||
oci->lenLastReq = 0;
|
|
||||||
+ oci->ignoreBytes = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((oco = oc->output)) {
|
|
||||||
--
|
|
||||||
1.8.2.1
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
|||||||
From 31e066546fd085725cc29e95867a04c70ce46ebc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Date: Fri, 26 Apr 2013 15:10:08 +1000
|
|
||||||
Subject: [PATCH 05/35] dix: fix device scaling to use a [min,max[ range.
|
|
||||||
|
|
||||||
defmin/defmax are screen coords and thus use a min-inclusive, max-exclusive
|
|
||||||
range. device axes ranges are inclusive, so bump the max up by one to get the
|
|
||||||
scaling right.
|
|
||||||
|
|
||||||
This fixes off-by-one coordinate errors if the coordinate matrix is used to
|
|
||||||
bind the device to a fraction of the screen. It introduces an off-by-one
|
|
||||||
scaling error in the device coordinate range, but since most devices have a
|
|
||||||
higher resolution than the screen (e.g. a Wacom I4 has 5080 dpi) the effect
|
|
||||||
of this should be limited.
|
|
||||||
|
|
||||||
This error manifests when we have numScreens > 1, as the scaling from
|
|
||||||
desktop size back to screen size drops one device unit.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
(cherry picked from commit 756ab88d93542f0589c9bf46f40ccc57df64f0fd)
|
|
||||||
---
|
|
||||||
dix/devices.c | 4 ++--
|
|
||||||
dix/getevents.c | 14 ++++++++++----
|
|
||||||
2 files changed, 12 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dix/devices.c b/dix/devices.c
|
|
||||||
index b2db4aa..a0d545a 100644
|
|
||||||
--- a/dix/devices.c
|
|
||||||
+++ b/dix/devices.c
|
|
||||||
@@ -112,8 +112,8 @@ DeviceSetTransform(DeviceIntPtr dev, float *transform_data)
|
|
||||||
* Transform is the user supplied (affine) transform
|
|
||||||
* InvScale scales coordinates back up into their native range
|
|
||||||
*/
|
|
||||||
- sx = dev->valuator->axes[0].max_value - dev->valuator->axes[0].min_value;
|
|
||||||
- sy = dev->valuator->axes[1].max_value - dev->valuator->axes[1].min_value;
|
|
||||||
+ sx = dev->valuator->axes[0].max_value - dev->valuator->axes[0].min_value + 1;
|
|
||||||
+ sy = dev->valuator->axes[1].max_value - dev->valuator->axes[1].min_value + 1;
|
|
||||||
|
|
||||||
/* invscale */
|
|
||||||
pixman_f_transform_init_scale(&scale, sx, sy);
|
|
||||||
diff --git a/dix/getevents.c b/dix/getevents.c
|
|
||||||
index ac0ccb2..51d4fd4 100644
|
|
||||||
--- a/dix/getevents.c
|
|
||||||
+++ b/dix/getevents.c
|
|
||||||
@@ -298,11 +298,11 @@ rescaleValuatorAxis(double coord, AxisInfoPtr from, AxisInfoPtr to,
|
|
||||||
|
|
||||||
if (from && from->min_value < from->max_value) {
|
|
||||||
fmin = from->min_value;
|
|
||||||
- fmax = from->max_value;
|
|
||||||
+ fmax = from->max_value + 1;
|
|
||||||
}
|
|
||||||
if (to && to->min_value < to->max_value) {
|
|
||||||
tmin = to->min_value;
|
|
||||||
- tmax = to->max_value;
|
|
||||||
+ tmax = to->max_value + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fmin == tmin && fmax == tmax)
|
|
||||||
@@ -924,9 +924,9 @@ scale_to_desktop(DeviceIntPtr dev, ValuatorMask *mask,
|
|
||||||
|
|
||||||
/* scale x&y to desktop coordinates */
|
|
||||||
*screenx = rescaleValuatorAxis(x, dev->valuator->axes + 0, NULL,
|
|
||||||
- screenInfo.x, screenInfo.width - 1);
|
|
||||||
+ screenInfo.x, screenInfo.width);
|
|
||||||
*screeny = rescaleValuatorAxis(y, dev->valuator->axes + 1, NULL,
|
|
||||||
- screenInfo.y, screenInfo.height - 1);
|
|
||||||
+ screenInfo.y, screenInfo.height);
|
|
||||||
|
|
||||||
*devx = x;
|
|
||||||
*devy = y;
|
|
||||||
@@ -1366,6 +1366,12 @@ QueuePointerEvents(DeviceIntPtr device, int type,
|
|
||||||
* is the last coordinate on the first screen and must be rescaled for the
|
|
||||||
* event to be m. XI2 clients that do their own coordinate mapping would
|
|
||||||
* otherwise interpret the position of the device elsewere to the cursor.
|
|
||||||
+ * However, this scaling leads to losses:
|
|
||||||
+ * if we have two ScreenRecs we scale from e.g. [0..44704] (Wacom I4) to
|
|
||||||
+ * [0..2048[. that gives us 2047.954 as desktop coord, or the per-screen
|
|
||||||
+ * coordinate 1023.954. Scaling that back into the device coordinate range
|
|
||||||
+ * gives us 44703. So off by one device unit. It's a bug, but we'll have to
|
|
||||||
+ * live with it because with all this scaling, we just cannot win.
|
|
||||||
*
|
|
||||||
* @return the number of events written into events.
|
|
||||||
*/
|
|
||||||
--
|
|
||||||
1.8.2.1
|
|
||||||
|
|
@ -52,3 +52,20 @@ Section "InputClass"
|
|||||||
MatchDriver "evdev"
|
MatchDriver "evdev"
|
||||||
Option "TypeName" "MOUSE"
|
Option "TypeName" "MOUSE"
|
||||||
EndSection
|
EndSection
|
||||||
|
|
||||||
|
# synaptics resolution and axis dimensions are not representative of the
|
||||||
|
# actual device dimensions, partially because what the kernel exports as
|
||||||
|
# axis range is the what "fingers of typical size are used on TouchPads
|
||||||
|
# mounted in typical bezel" produce (synaptics interfacing guide, p 23).
|
||||||
|
# Even with the axis ranges corrected to what (my) touchpad actually
|
||||||
|
# produces, the values are even further off, essentially stopping Y
|
||||||
|
# movement if the server takes resolution into account.
|
||||||
|
# So for the sake of my sanity, disable synaptics axis resolution by default
|
||||||
|
# so the server can take the resolution from good devices and use that
|
||||||
|
# for adjusting movement
|
||||||
|
Section "InputClass"
|
||||||
|
Identifier "Synaptics resolution set to 0"
|
||||||
|
MatchDriver "synaptics"
|
||||||
|
Option "VertResolution" "0"
|
||||||
|
Option "HorizResolution" "0"
|
||||||
|
EndSection
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
4f231ad29ce44f3718cc1bf3b357dbb4 xorg-server-1.14.1.901.tar.bz2
|
5d36a6483e8e301875131e8302c67727 xorg-server-1.14.2.tar.bz2
|
||||||
|
@ -41,8 +41,8 @@
|
|||||||
|
|
||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.14.1.901
|
Version: 1.14.2
|
||||||
Release: 2%{?gitdate:.%{gitdate}}%{dist}
|
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -106,11 +106,7 @@ Patch7064: 0001-mieq-Bump-default-queue-size-to-512.patch
|
|||||||
|
|
||||||
# touch-grab-race condition bug backports
|
# touch-grab-race condition bug backports
|
||||||
# https://bugs.freedesktop.org/show_bug.cgi?id=56578
|
# https://bugs.freedesktop.org/show_bug.cgi?id=56578
|
||||||
Patch8000: 0001-dix-plug-memory-leak-in-freeing-TouchClass.patch
|
|
||||||
Patch8001: 0002-dix-don-t-overwrite-proximity-focus-classes.patch
|
|
||||||
Patch8002: 0003-os-Reset-input-buffer-s-ignoreBytes-field.patch
|
|
||||||
Patch8003: 0004-dix-pre-scale-x-by-the-screen-device-resolution-rati.patch
|
Patch8003: 0004-dix-pre-scale-x-by-the-screen-device-resolution-rati.patch
|
||||||
Patch8004: 0005-dix-fix-device-scaling-to-use-a-min-max-range.patch
|
|
||||||
Patch8005: 0006-Xi-not-having-an-ownership-mask-does-not-mean-automa.patch
|
Patch8005: 0006-Xi-not-having-an-ownership-mask-does-not-mean-automa.patch
|
||||||
Patch8006: 0007-dix-don-t-prepend-an-activated-passive-grab-to-the-l.patch
|
Patch8006: 0007-dix-don-t-prepend-an-activated-passive-grab-to-the-l.patch
|
||||||
Patch8007: 0008-Xi-if-we-delivered-a-TouchEnd-to-a-passive-grab-end-.patch
|
Patch8007: 0008-Xi-if-we-delivered-a-TouchEnd-to-a-passive-grab-end-.patch
|
||||||
@ -620,6 +616,13 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 04 2013 Peter Hutterer <peter.hutterer@redhat.com> 1.14.2-1
|
||||||
|
- xorg-server 1.4.2
|
||||||
|
- drop merged patches
|
||||||
|
- Add a quirk to set the synaptics resolution to 0 by default. The pre-scale
|
||||||
|
patch in the server clashes with synaptics inaccurate resolution numbers,
|
||||||
|
causing the touchpad movement to be stunted.
|
||||||
|
|
||||||
* Thu Jun 06 2013 Peter Hutterer <peter.hutterer@redhat.com> 1.14.1.901-2
|
* Thu Jun 06 2013 Peter Hutterer <peter.hutterer@redhat.com> 1.14.1.901-2
|
||||||
- Backport the touch grab race condition patches from fdo #56578
|
- Backport the touch grab race condition patches from fdo #56578
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user