diff options
Diffstat (limited to 'src/hwstate.c')
-rw-r--r-- | src/hwstate.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/hwstate.c b/src/hwstate.c index d758d25..07bab31 100644 --- a/src/hwstate.c +++ b/src/hwstate.c @@ -69,14 +69,24 @@ static void set_finger(struct FingerState *fs, { int x = defuzz(hw->position_x, fs->hw.position_x, caps->xfuzz); int y = defuzz(hw->position_y, fs->hw.position_y, caps->yfuzz); - fs->hw = *hw; + int tj = defuzz(hw->touch_major, fs->hw.touch_major, caps->wfuzz); + int tn = defuzz(hw->touch_minor, fs->hw.touch_minor, caps->wfuzz); + int wj = defuzz(hw->width_major, fs->hw.width_major, caps->wfuzz); + int wn = defuzz(hw->width_minor, fs->hw.width_minor, caps->wfuzz); fs->id = id; + fs->hw = *hw; + fs->hw.position_x = x; + fs->hw.position_y = y; + if (hw->touch_major) { + fs->hw.touch_major = tj; + fs->hw.touch_minor = tn; + } + fs->hw.width_major = wj; + fs->hw.width_minor = wn; if (!caps->has_touch_minor) fs->hw.touch_minor = hw->touch_major; if (!caps->has_width_minor) fs->hw.width_minor = hw->width_major; - fs->hw.position_x = x; - fs->hw.position_y = y; } void modify_hwstate(struct HWState *s, |