aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2008-11-09 03:37:55 +0100
committerHenrik Rydberg <rydberg@euromail.se>2008-11-09 03:37:55 +0100
commit84088723ed0c5f59335213c12f4b9dbf58af8270 (patch)
tree3b7d1d000d005676b4292084fafb86b910bc9026
parent84f1dbb29462ec91850c04e0bba256668e584e00 (diff)
downloadxorg-input-kobomultitouch-84088723ed0c5f59335213c12f4b9dbf58af8270.tar.gz
xorg-input-kobomultitouch-84088723ed0c5f59335213c12f4b9dbf58af8270.tar.bz2
xorg-input-kobomultitouch-84088723ed0c5f59335213c12f4b9dbf58af8270.zip
drop packets out of sync
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
-rw-r--r--src/hwdata.c4
-rw-r--r--src/hwdata.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/hwdata.c b/src/hwdata.c
index d39211f..cd93fe0 100644
--- a/src/hwdata.c
+++ b/src/hwdata.c
@@ -39,16 +39,20 @@ bool read_hwdata(struct HWData *hw, const struct input_event* ev)
CLEARBIT(hw->button, MT_BUTTON_RIGHT);
break;
case BTN_MT_REPORT_PACKET:
+ hw->in_packet = ev->value;
if (ev->value)
hw->nfinger = 0;
break;
case BTN_MT_REPORT_FINGER:
+ hw->in_finger = ev->value;
if (!ev->value && hw->nfinger < DIM_FINGER)
hw->nfinger++;
break;
}
break;
case EV_ABS:
+ if (!hw->in_packet || !hw->in_finger)
+ break;
if (hw->nfinger == DIM_FINGER)
break;
switch (ev->code) {
diff --git a/src/hwdata.h b/src/hwdata.h
index f91f11b..a5f9bf5 100644
--- a/src/hwdata.h
+++ b/src/hwdata.h
@@ -26,6 +26,7 @@ struct HWData {
struct FingerData finger[DIM_FINGER];
button_t button;
int nfinger;
+ bool in_packet, in_finger;
};
////////////////////////////////////////////////////////