diff options
Diffstat (limited to 'src/mtstate.c')
-rw-r--r-- | src/mtstate.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/mtstate.c b/src/mtstate.c index a8541dc..c3bcc78 100644 --- a/src/mtstate.c +++ b/src/mtstate.c @@ -39,6 +39,14 @@ static int touching_finger(const struct FingerData *hw, return 1; } +static int set_finger(struct MTFinger *f, + const struct FingerState *fs, + const struct Capabilities *caps) +{ + f->hw = fs->hw; + f->id = fs->id; +} + void extract_mtstate(struct MTState *s, const struct HWState *hs, const struct Capabilities *caps) @@ -46,15 +54,18 @@ void extract_mtstate(struct MTState *s, int i; s->nfinger = 0; - for (i = 0; i < hs->nfinger; i++) - if (touching_finger(&hs->finger[i].hw, caps)) - s->finger[s->nfinger++] = hs->finger[i]; + for (i = 0; i < hs->nfinger; i++) { + if (!touching_finger(&hs->finger[i].hw, caps)) + continue; + set_finger(&s->finger[s->nfinger], &hs->finger[i], caps); + s->nfinger++; + } s->button = hs->button; s->evtime = hs->evtime; } -const struct FingerState *find_finger(const struct MTState *s, int id) +const struct MTFinger *find_finger(const struct MTState *s, int id) { int i; |