xorg-server: Changes to 'ubuntu+1'
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.douglas@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.douglas@ubuntu.com> Thu, 19 Jan 2012 10:31:20 -0800
+ -- Chase Douglas <chase.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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.douglas@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
Reply to: