diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2009-05-16 20:07:01 +0200 |
---|---|---|
committer | Henrik Rydberg <rydberg@euromail.se> | 2009-05-16 20:07:01 +0200 |
commit | ba20f03d7d2794b3d794e839ba1db45ba327bb62 (patch) | |
tree | 35fdd3c1a3c9863c601750c81f24a56bca122b94 /src/hwdata.c | |
parent | ecb6a617cc0af69fd4733d9095a5cff842b8e552 (diff) | |
download | xorg-input-kobomultitouch-ba20f03d7d2794b3d794e839ba1db45ba327bb62.tar.gz xorg-input-kobomultitouch-ba20f03d7d2794b3d794e839ba1db45ba327bb62.tar.bz2 xorg-input-kobomultitouch-ba20f03d7d2794b3d794e839ba1db45ba327bb62.zip |
adapt to final version of MT protocol
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/hwdata.c')
-rw-r--r-- | src/hwdata.c | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/src/hwdata.c b/src/hwdata.c index cd93fe0..aa4c271 100644 --- a/src/hwdata.c +++ b/src/hwdata.c @@ -15,7 +15,12 @@ bool read_hwdata(struct HWData *hw, const struct input_event* ev) case EV_SYN: switch (ev->code) { case SYN_REPORT: + hw->nread = 0; return 1; + case SYN_MT_REPORT: + hw->nread++; + hw->nfinger = hw->nread; + break; } break; case EV_KEY: @@ -38,44 +43,32 @@ bool read_hwdata(struct HWData *hw, const struct input_event* ev) else 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) + if (hw->nread == DIM_FINGER) break; switch (ev->code) { case ABS_MT_TOUCH_MAJOR: - hw->finger[hw->nfinger].touch_major = ev->value; + hw->finger[hw->nread].touch_major = ev->value; break; case ABS_MT_TOUCH_MINOR: - hw->finger[hw->nfinger].touch_minor = ev->value; + hw->finger[hw->nread].touch_minor = ev->value; break; case ABS_MT_WIDTH_MAJOR: - hw->finger[hw->nfinger].width_major = ev->value; + hw->finger[hw->nread].width_major = ev->value; break; case ABS_MT_WIDTH_MINOR: - hw->finger[hw->nfinger].width_minor = ev->value; + hw->finger[hw->nread].width_minor = ev->value; break; case ABS_MT_ORIENTATION: - hw->finger[hw->nfinger].orientation = ev->value; + hw->finger[hw->nread].orientation = ev->value; break; case ABS_MT_POSITION_X: - hw->finger[hw->nfinger].position_x = ev->value; + hw->finger[hw->nread].position_x = ev->value; break; case ABS_MT_POSITION_Y: - hw->finger[hw->nfinger].position_y = ev->value; + hw->finger[hw->nread].position_y = ev->value; break; } break; |