diff options
Diffstat (limited to 'src/mtstate.c')
| -rw-r--r-- | src/mtstate.c | 45 |
1 files changed, 18 insertions, 27 deletions
diff --git a/src/mtstate.c b/src/mtstate.c index 2403765..7a8ef19 100644 --- a/src/mtstate.c +++ b/src/mtstate.c | |||
| @@ -34,7 +34,7 @@ void init_mtstate(struct MTState *s) | |||
| 34 | memset(s, 0, sizeof(struct MTState)); | 34 | memset(s, 0, sizeof(struct MTState)); |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | static int touching_finger(const struct FingerData *hw, | 37 | static int touching_finger(const struct FingerState *hw, |
| 38 | const struct Capabilities *caps) | 38 | const struct Capabilities *caps) |
| 39 | { | 39 | { |
| 40 | if (caps->has_abs[BIT_TOUCH_MAJOR] && caps->has_abs[BIT_WIDTH_MAJOR]) | 40 | if (caps->has_abs[BIT_TOUCH_MAJOR] && caps->has_abs[BIT_WIDTH_MAJOR]) |
| @@ -52,8 +52,8 @@ static int touching_finger(const struct FingerData *hw, | |||
| 52 | * by all three values touch_major, width_minor, and trackpad size. | 52 | * by all three values touch_major, width_minor, and trackpad size. |
| 53 | * | 53 | * |
| 54 | */ | 54 | */ |
| 55 | static int thumb_finger(const struct FingerData *hw, | 55 | static int is_thumb(const struct FingerState *hw, |
| 56 | const struct Capabilities *caps) | 56 | const struct Capabilities *caps) |
| 57 | { | 57 | { |
| 58 | if (!caps->has_abs[BIT_TOUCH_MAJOR] || | 58 | if (!caps->has_abs[BIT_TOUCH_MAJOR] || |
| 59 | !caps->has_abs[BIT_TOUCH_MINOR] || | 59 | !caps->has_abs[BIT_TOUCH_MINOR] || |
| @@ -66,26 +66,17 @@ static int thumb_finger(const struct FingerData *hw, | |||
| 66 | hw->width_major > THUMB_WIDTH_SIZE(hw, caps); | 66 | hw->width_major > THUMB_WIDTH_SIZE(hw, caps); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | static int set_finger(struct MTFinger *f, | ||
| 70 | const struct FingerState *fs, | ||
| 71 | const struct Capabilities *caps) | ||
| 72 | { | ||
| 73 | f->hw = fs->hw; | ||
| 74 | f->id = fs->id; | ||
| 75 | f->thumb = thumb_finger(&fs->hw, caps); | ||
| 76 | } | ||
| 77 | |||
| 78 | void extract_mtstate(struct MTState *s, | 69 | void extract_mtstate(struct MTState *s, |
| 79 | const struct HWState *hs, | 70 | const struct HWState *hs, |
| 80 | const struct Capabilities *caps) | 71 | const struct Capabilities *caps) |
| 81 | { | 72 | { |
| 82 | int i; | 73 | int i; |
| 83 | |||
| 84 | s->nfinger = 0; | 74 | s->nfinger = 0; |
| 85 | for (i = 0; i < hs->nfinger; i++) { | 75 | foreach_bit(i, hs->used) { |
| 86 | if (!touching_finger(&hs->finger[i].hw, caps)) | 76 | if (!touching_finger(&hs->data[i], caps)) |
| 87 | continue; | 77 | continue; |
| 88 | set_finger(&s->finger[s->nfinger], &hs->finger[i], caps); | 78 | s->finger[s->nfinger] = hs->data[i]; |
| 79 | MODBIT(s->thumb, s->nfinger, is_thumb(&hs->data[i], caps)); | ||
| 89 | s->nfinger++; | 80 | s->nfinger++; |
| 90 | } | 81 | } |
| 91 | 82 | ||
| @@ -93,12 +84,12 @@ void extract_mtstate(struct MTState *s, | |||
| 93 | s->evtime = hs->evtime; | 84 | s->evtime = hs->evtime; |
| 94 | } | 85 | } |
| 95 | 86 | ||
| 96 | const struct MTFinger *find_finger(const struct MTState *s, int id) | 87 | const struct FingerState *find_finger(const struct MTState *s, int id) |
| 97 | { | 88 | { |
| 98 | int i; | 89 | int i; |
| 99 | 90 | ||
| 100 | for (i = 0; i < s->nfinger; i++) | 91 | for (i = 0; i < s->nfinger; i++) |
| 101 | if (s->finger[i].id == id) | 92 | if (s->finger[i].tracking_id == id) |
| 102 | return s->finger + i; | 93 | return s->finger + i; |
| 103 | 94 | ||
| 104 | return NULL; | 95 | return NULL; |
| @@ -119,14 +110,14 @@ void output_mtstate(const struct MTState *s) | |||
| 119 | xf86Msg(X_INFO, | 110 | xf86Msg(X_INFO, |
| 120 | " %+02d %+05d:%+05d +%05d:%+05d " | 111 | " %+02d %+05d:%+05d +%05d:%+05d " |
| 121 | "%+06d %+06d %+05d:%+05d\n", | 112 | "%+06d %+06d %+05d:%+05d\n", |
| 122 | s->finger[i].id, | 113 | s->finger[i].tracking_id, |
| 123 | s->finger[i].hw.touch_major, | 114 | s->finger[i].touch_major, |
| 124 | s->finger[i].hw.touch_minor, | 115 | s->finger[i].touch_minor, |
| 125 | s->finger[i].hw.width_major, | 116 | s->finger[i].width_major, |
| 126 | s->finger[i].hw.width_minor, | 117 | s->finger[i].width_minor, |
| 127 | s->finger[i].hw.orientation, | 118 | s->finger[i].orientation, |
| 128 | s->finger[i].hw.pressure, | 119 | s->finger[i].pressure, |
| 129 | s->finger[i].hw.position_x, | 120 | s->finger[i].position_x, |
| 130 | s->finger[i].hw.position_y); | 121 | s->finger[i].position_y); |
| 131 | } | 122 | } |
| 132 | } | 123 | } |
