aboutsummaryrefslogtreecommitdiffstats
path: root/src/hwstate.c
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-10-12 15:38:43 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-10-12 15:38:43 +0200
commitacea9df3381825a634c000a574f58b4ca5293ee8 (patch)
tree3698bd55f137bc377f1b840e4fb5bf9e446e7250 /src/hwstate.c
parent7380af2c93dc83f4f09e293717d46eadf7799e89 (diff)
downloadxorg-input-kobomultitouch-acea9df3381825a634c000a574f58b4ca5293ee8.tar.gz
xorg-input-kobomultitouch-acea9df3381825a634c000a574f58b4ca5293ee8.tar.bz2
xorg-input-kobomultitouch-acea9df3381825a634c000a574f58b4ca5293ee8.zip
Same version, but using the mtdev library.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/hwstate.c')
-rw-r--r--src/hwstate.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/hwstate.c b/src/hwstate.c
index 82a3a10..076efa1 100644
--- a/src/hwstate.c
+++ b/src/hwstate.c
@@ -26,7 +26,7 @@ void init_hwstate(struct HWState *s, const struct Capabilities *caps)
int i;
memset(s, 0, sizeof(struct HWState));
for (i = 0; i < DIM_FINGER; i++)
- s->data[i].tracking_id = caps->nullid;
+ s->data[i].tracking_id = MT_ID_NULL;
}
static void finish_packet(struct HWState *s, const struct Capabilities *caps,
@@ -35,16 +35,16 @@ static void finish_packet(struct HWState *s, const struct Capabilities *caps,
static const mstime_t ms = 1000;
int i;
foreach_bit(i, s->used) {
- if (!caps->has_abs[BIT_TOUCH_MINOR])
+ if (!caps->has_abs[MTDEV_TOUCH_MINOR])
s->data[i].touch_minor = s->data[i].touch_major;
- if (!caps->has_abs[BIT_WIDTH_MINOR])
+ if (!caps->has_abs[MTDEV_WIDTH_MINOR])
s->data[i].width_minor = s->data[i].width_major;
}
s->evtime = syn->time.tv_usec / ms + syn->time.tv_sec * ms;
}
-int hwstate_read(struct HWState *s, const struct Capabilities *caps,
- const struct input_event *ev)
+static int read_event(struct HWState *s, const struct Capabilities *caps,
+ const struct input_event *ev)
{
switch (ev->type) {
case EV_SYN:
@@ -99,11 +99,21 @@ int hwstate_read(struct HWState *s, const struct Capabilities *caps,
break;
case ABS_MT_TRACKING_ID:
s->data[s->slot].tracking_id = ev->value;
- MODBIT(s->used, s->slot,
- ev->value != caps->nullid);
+ MODBIT(s->used, s->slot, ev->value != MT_ID_NULL);
break;
}
break;
}
return 0;
}
+
+int modify_hwstate(struct HWState *s, struct mtdev *dev, int fd,
+ const struct Capabilities *caps)
+{
+ struct input_event ev;
+ int ret;
+ while ((ret = mtdev_get(dev, fd, &ev, 1)) > 0)
+ if (read_event(s, caps, &ev))
+ return 1;
+ return ret;
+}