diff options
Diffstat (limited to 'src/hwstate.c')
| -rw-r--r-- | src/hwstate.c | 24 |
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 | ||
| 32 | static void finish_packet(struct HWState *s, const struct Capabilities *caps, | 32 | 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, | |||
| 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 | ||
| 46 | int hwstate_read(struct HWState *s, const struct Capabilities *caps, | 46 | static 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 | |||
| 110 | int 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 | } | ||
