summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChase Douglas <chase.douglas@canonical.com>2012-02-09 11:18:25 -0800
committerChase Douglas <chase.douglas@canonical.com>2012-02-11 23:01:10 +0100
commitac8bf59d55a9f6bbf260ebfd46dc357257d77074 (patch)
treeed8beb0be00f6b1b30e824ad93b87b093e242e53
parenta2cafc6a4e1554a68069a6c6b644e3908d10d871 (diff)
Calculate touch data for semi-mt devices, but don't send touch events
Touch data can be used for clickpad processing. Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--src/eventcomm.c2
-rw-r--r--src/synaptics.c3
-rw-r--r--src/synapticsstr.h1
3 files changed, 5 insertions, 1 deletions
diff --git a/src/eventcomm.c b/src/eventcomm.c
index 2bbc383..26e9d03 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -757,7 +757,7 @@ event_query_touch(InputInfoPtr pInfo)
{
xf86IDrvMsg(pInfo, X_INFO,
"ignoring touch events for semi-multitouch device\n");
- return;
+ priv->has_semi_mt = TRUE;
}
if (rc >= 0 && BitIsOn(&prop, INPUT_PROP_BUTTONPAD))
diff --git a/src/synaptics.c b/src/synaptics.c
index d840aa4..27089c8 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2668,6 +2668,9 @@ HandleTouches(InputInfoPtr pInfo, struct SynapticsHwState *hw)
new_active_touches--;
}
+ if (priv->has_semi_mt)
+ goto out;
+
if (priv->num_active_touches < min_touches &&
new_active_touches < min_touches)
{
diff --git a/src/synapticsstr.h b/src/synapticsstr.h
index 1ea09a0..3ea30fe 100644
--- a/src/synapticsstr.h
+++ b/src/synapticsstr.h
@@ -269,6 +269,7 @@ typedef struct _SynapticsPrivateRec
Bool has_pressure; /* device reports pressure */
Bool has_width; /* device reports finger width */
Bool has_scrollbuttons; /* device has physical scrollbuttons */
+ Bool has_semi_mt; /* device is only semi-multitouch capable */
enum TouchpadModel model; /* The detected model */
unsigned short id_vendor; /* vendor id */