debian/changelog | 10 +++ debian/patches/220_dont_scale_indirect.patch | 34 ++++++++++++ debian/patches/221_pointer_motion_update_fix.patch | 34 ++++++++++++ debian/patches/222_touch_valuators_absolute.patch | 49 ++++++++++++++++++ debian/patches/223_indirect_touch_x_y_valuators.patch | 35 ++++++++++++ debian/patches/series | 4 + 6 files changed, 166 insertions(+)
New commits: commit db485215999c6313159f6efd251462a6d91a3eb4 Author: Chase Douglas <chase.doug...@ubuntu.com> Date: Thu Jan 19 16:23:38 2012 -0800 releasing version 2:1.11.3-0ubuntu7 diff --git a/debian/changelog b/debian/changelog index 9459645..1fe6b50 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xorg-server (2:1.11.3-0ubuntu7) UNRELEASED; urgency=low +xorg-server (2:1.11.3-0ubuntu7) precise; urgency=low * Fixes for relative devices - Add 220_dont_scale_indirect.patch @@ -6,7 +6,7 @@ xorg-server (2:1.11.3-0ubuntu7) UNRELEASED; urgency=low - Add 222_touch_valuators_absolute.patch - Add 223_indirect_touch_x_y_valuators.patch - -- Chase Douglas <chase.doug...@ubuntu.com> Thu, 19 Jan 2012 10:31:20 -0800 + -- Chase Douglas <chase.doug...@ubuntu.com> Thu, 19 Jan 2012 16:23:28 -0800 xorg-server (2:1.11.3-0ubuntu6) precise; urgency=low commit 5c2123a815da1d417529ade3644e10938efed967 Author: Chase Douglas <chase.doug...@ubuntu.com> Date: Thu Jan 19 10:36:23 2012 -0800 Fixes for relative devices * Fixes for relative devices - Add 220_dont_scale_indirect.patch - Add 221_pointer_motion_update_fix.patch - Add 222_touch_valuators_absolute.patch - Add 223_indirect_touch_x_y_valuators.patch diff --git a/debian/changelog b/debian/changelog index 8288890..9459645 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +xorg-server (2:1.11.3-0ubuntu7) UNRELEASED; urgency=low + + * Fixes for relative devices + - Add 220_dont_scale_indirect.patch + - Add 221_pointer_motion_update_fix.patch + - Add 222_touch_valuators_absolute.patch + - Add 223_indirect_touch_x_y_valuators.patch + + -- Chase Douglas <chase.doug...@ubuntu.com> Thu, 19 Jan 2012 10:31:20 -0800 + xorg-server (2:1.11.3-0ubuntu6) precise; urgency=low * Bump Build-Depends on x11proto-input-dev to 2.1.99.5 diff --git a/debian/patches/220_dont_scale_indirect.patch b/debian/patches/220_dont_scale_indirect.patch new file mode 100644 index 0000000..6d40fbd --- /dev/null +++ b/debian/patches/220_dont_scale_indirect.patch @@ -0,0 +1,34 @@ +From 1bc4343fc28e8626872fdfd48522ab8191cfedd1 Mon Sep 17 00:00:00 2001 +From: Chase Douglas <chase.doug...@canonical.com> +Date: Wed, 18 Jan 2012 17:19:31 -0800 +Subject: [PATCH 1/4] Only scale direct device touch coordinates + +Indirect touch devices provide valuator values in pure device +coordinates. They also don't need to be fixed up for screen crossings. + +Signed-off-by: Chase Douglas <chase.doug...@ubuntu.com> +--- + dix/getevents.c | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index d0014e6..2946b16 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -1867,7 +1867,12 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, + if (need_rawevent) + set_raw_valuators(raw, &mask, raw->valuators.data); + +- scr = scale_to_desktop(dev, &mask, &devx, &devy, &screenx, &screeny); ++ /* Indirect device touch coordinates are not used for cursor positioning. ++ * They are merely informational, and are provided in device coordinates. ++ * The device sprite is used for positioning instead, and it is already ++ * scaled. */ ++ if (t->mode == XIDirectTouch) ++ scr = scale_to_desktop(dev, &mask, &devx, &devy, &screenx, &screeny); + if (emulate_pointer) + scr = positionSprite(dev, Absolute, &mask, + &devx, &devy, &screenx, &screeny); +-- +1.7.8.3 + diff --git a/debian/patches/221_pointer_motion_update_fix.patch b/debian/patches/221_pointer_motion_update_fix.patch new file mode 100644 index 0000000..acfbcb6 --- /dev/null +++ b/debian/patches/221_pointer_motion_update_fix.patch @@ -0,0 +1,34 @@ +From e90415cc873d07e0323c15d5ec7f90311f60a1a1 Mon Sep 17 00:00:00 2001 +From: Chase Douglas <chase.doug...@canonical.com> +Date: Wed, 18 Jan 2012 17:22:47 -0800 +Subject: [PATCH 2/4] Only update pointer motion data for pointer emulated + touch events + +Signed-off-by: Chase Douglas <chase.doug...@ubuntu.com> +--- + dix/getevents.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index 2946b16..1547059 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -1878,9 +1878,13 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, + &devx, &devy, &screenx, &screeny); + + /* see fill_pointer_events for coordinate systems */ +- updateHistory(dev, &mask, ms); ++ if (emulate_pointer) ++ updateHistory(dev, &mask, ms); ++ + clipValuators(dev, &mask); +- storeLastValuators(dev, &mask, 0, 1, devx, devy); ++ ++ if (emulate_pointer) ++ storeLastValuators(dev, &mask, 0, 1, devx, devy); + + event->root = scr->root->drawable.id; + +-- +1.7.8.3 + diff --git a/debian/patches/222_touch_valuators_absolute.patch b/debian/patches/222_touch_valuators_absolute.patch new file mode 100644 index 0000000..475871f --- /dev/null +++ b/debian/patches/222_touch_valuators_absolute.patch @@ -0,0 +1,49 @@ +From d9f359e17e1ba15ef0605250c6fa0cf48301c386 Mon Sep 17 00:00:00 2001 +From: Chase Douglas <chase.doug...@canonical.com> +Date: Wed, 18 Jan 2012 18:39:01 -0800 +Subject: [PATCH 3/4] Treat all touch event valuators as absolute + +An indirect touch device, such as a multitouch touchpad, has relative X +and Y axes internally. These axes are in screen coordinates. However, +the cooresponding axes for touch events are in absolute device +coordinates. + +Signed-off-by: Chase Douglas <chase.doug...@canonical.com> +--- + dix/getevents.c | 12 +++++++++--- + 1 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index 1547059..3e37910 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -222,17 +222,23 @@ set_valuators(DeviceIntPtr dev, DeviceEvent* event, ValuatorMask *mask) + int i; + + /* Set the data to the previous value for unset absolute axes. The values +- * may be used when sent as part of an XI 1.x valuator event. */ ++ * may be used when sent as part of an XI 1.x valuator event. ++ * ++ * All touch event valuators are absolute, even if the corresponding pointer ++ * valuator is relative. This is the case for indirect touch devices for the ++ * X and Y axes. */ + for (i = 0; i < valuator_mask_size(mask); i++) + { + if (valuator_mask_isset(mask, i)) + { + SetBit(event->valuators.mask, i); +- if (valuator_get_mode(dev, i) == Absolute) ++ if (IsTouchEvent((InternalEvent *)event) || ++ valuator_get_mode(dev, i) == Absolute) + SetBit(event->valuators.mode, i); + event->valuators.data[i] = valuator_mask_get_double(mask, i); + } +- else if (valuator_get_mode(dev, i) == Absolute) ++ else if (IsTouchEvent((InternalEvent *)event) || ++ valuator_get_mode(dev, i) == Absolute) + event->valuators.data[i] = dev->valuator->axisVal[i]; + } + } +-- +1.7.8.3 + diff --git a/debian/patches/223_indirect_touch_x_y_valuators.patch b/debian/patches/223_indirect_touch_x_y_valuators.patch new file mode 100644 index 0000000..11d435c --- /dev/null +++ b/debian/patches/223_indirect_touch_x_y_valuators.patch @@ -0,0 +1,35 @@ +From 32b62f7ab26a1ce7665230859cea55e5bb2507db Mon Sep 17 00:00:00 2001 +From: Chase Douglas <chase.doug...@canonical.com> +Date: Wed, 18 Jan 2012 19:03:57 -0800 +Subject: [PATCH 4/4] Don't set X and Y valuators for indirect touch events + +For expediency, it made sense to always have the X and Y axes set for +direct touch device event propagation. The last X and Y values are +stored internally. However, indirect device touch event propagation +does not depend on the touch's X and Y values. Thus, we don't need to +set the values for every indirect touch event. + +On top of this, the previous X and Y values aren't stored for indirect +touches, so without this change the axes get erroneously set to 0. + +Signed-off-by: Chase Douglas <chase.doug...@canonical.com> +--- + dix/getevents.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index 3e37910..546b5a8 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -1842,7 +1842,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, + default: + return 0; + } +- if (!(flags & TOUCH_CLIENT_ID)) ++ if (t->mode == XIDirectTouch && !(flags & TOUCH_CLIENT_ID)) + { + if (!valuator_mask_isset(&mask, 0)) + valuator_mask_set_double(&mask, 0, valuator_mask_get_double(touchpoint.ti->valuators, 0)); +-- +1.7.8.3 + diff --git a/debian/patches/series b/debian/patches/series index a37033e..50da304 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -27,3 +27,7 @@ 208_switch_on_release.diff 209_add_legacy_bgnone_option.patch 214_glx_dri_searchdirs.patch +220_dont_scale_indirect.patch +221_pointer_motion_update_fix.patch +222_touch_valuators_absolute.patch +223_indirect_touch_x_y_valuators.patch -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1ro2eq-0008vh...@vasks.debian.org