[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: