diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index fa2d869..c3a7fdf 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -19,7 +19,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.7.3 -Release: 7%{dist} +Release: 8%{dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -84,6 +84,9 @@ Patch6066: xserver-1.7.1-glx14-swrast.patch Patch6067: xserver-1.7.3-exa-master.patch Patch6068: xserver-1.7.3-fb-backport.patch +# sent to list, should be upstream with next release +Patch6069: xserver-1.7.3-cursor-jumps.patch + %define moduledir %{_libdir}/xorg/modules %define drimoduledir %{_libdir}/dri %define sdkdir %{_includedir}/xorg @@ -511,6 +514,10 @@ rm -rf $RPM_BUILD_ROOT %{xserver_source_dir} %changelog +* Tue Jan 05 2010 Peter Hutterer 1.7.3-8 +- xserver-1.7.3-cursor-jumps.patch: don't jump to 0/0 after hitting a key + one a key+valuator device (#548938) + * Tue Jan 05 2010 Peter Hutterer 1.7.3-7 - Require xkeyboard-config, not xkbdata. xkbdata has been replaced by xkeyboard-config. diff --git a/xserver-1.7.3-cursor-jumps.patch b/xserver-1.7.3-cursor-jumps.patch new file mode 100644 index 0000000..c5d4a30 --- /dev/null +++ b/xserver-1.7.3-cursor-jumps.patch @@ -0,0 +1,38 @@ +From 84842964462a61e524ceb3cf9f9a2999a6c89b92 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Tue, 5 Jan 2010 13:15:25 +1000 +Subject: [PATCH] dix: don't update the slave coordinates from the VCK. + +A keyboard event from a device with both valuators and keys will be posted +through the VCK. In this case, do not update the slave device coordinates +from the VCK - they're always 0/0. Leave them as-is, for the next pointer +event will continue where it left. + +Signed-off-by: Peter Hutterer +--- + dix/getevents.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index 2df32e8..85518b2 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -630,9 +630,12 @@ updateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_event + if (master && master->last.slave != dev) + { + CreateClassesChangedEvent(events, master, dev, type); +- updateSlaveDeviceCoords(master, dev); +- master->last.slave = dev; +- master->last.numValuators = dev->last.numValuators; ++ if (IsPointerDevice(master)) ++ { ++ updateSlaveDeviceCoords(master, dev); ++ master->last.slave = dev; ++ master->last.numValuators = dev->last.numValuators; ++ } + (*num_events)++; + events++; + } +-- +1.6.5.2 +