summaryrefslogtreecommitdiff
path: root/src/hwstate.c
diff options
context:
space:
mode:
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)
26 int i; 26 int i;
27 memset(s, 0, sizeof(struct HWState)); 27 memset(s, 0, sizeof(struct HWState));
28 for (i = 0; i < DIM_FINGER; i++) 28 for (i = 0; i < DIM_FINGER; i++)
29 s->data[i].tracking_id = caps->nullid; 29 s->data[i].tracking_id = MT_ID_NULL;
30} 30}
31 31
32static void finish_packet(struct HWState *s, const struct Capabilities *caps, 32static 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,
35 static const mstime_t ms = 1000; 35 static const mstime_t ms = 1000;
36 int i; 36 int i;
37 foreach_bit(i, s->used) { 37 foreach_bit(i, s->used) {
38 if (!caps->has_abs[BIT_TOUCH_MINOR]) 38 if (!caps->has_abs[MTDEV_TOUCH_MINOR])
39 s->data[i].touch_minor = s->data[i].touch_major; 39 s->data[i].touch_minor = s->data[i].touch_major;
40 if (!caps->has_abs[BIT_WIDTH_MINOR]) 40 if (!caps->has_abs[MTDEV_WIDTH_MINOR])
41 s->data[i].width_minor = s->data[i].width_major; 41 s->data[i].width_minor = s->data[i].width_major;
42 } 42 }
43 s->evtime = syn->time.tv_usec / ms + syn->time.tv_sec * ms; 43 s->evtime = syn->time.tv_usec / ms + syn->time.tv_sec * ms;
44} 44}
45 45
46int hwstate_read(struct HWState *s, const struct Capabilities *caps, 46static int read_event(struct HWState *s, const struct Capabilities *caps,
47 const struct input_event *ev) 47 const struct input_event *ev)
48{ 48{
49 switch (ev->type) { 49 switch (ev->type) {
50 case EV_SYN: 50 case EV_SYN:
@@ -99,11 +99,21 @@ int hwstate_read(struct HWState *s, const struct Capabilities *caps,
99 break; 99 break;
100 case ABS_MT_TRACKING_ID: 100 case ABS_MT_TRACKING_ID:
101 s->data[s->slot].tracking_id = ev->value; 101 s->data[s->slot].tracking_id = ev->value;
102 MODBIT(s->used, s->slot, 102 MODBIT(s->used, s->slot, ev->value != MT_ID_NULL);
103 ev->value != caps->nullid);
104 break; 103 break;
105 } 104 }
106 break; 105 break;
107 } 106 }
108 return 0; 107 return 0;
109} 108}
109
110int modify_hwstate(struct HWState *s, struct mtdev *dev, int fd,
111 const struct Capabilities *caps)
112{
113 struct input_event ev;
114 int ret;
115 while ((ret = mtdev_get(dev, fd, &ev, 1)) > 0)
116 if (read_event(s, caps, &ev))
117 return 1;
118 return ret;
119}