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 <[email protected]>
---
 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

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to