diff --git a/dix/inpututils.c b/dix/inpututils.c index 5b7da3ab2db5beade4f3cf933dd23c94c6ea214a..6bff9efab7d1f0c4a07ebc45978d7c2efa3195c2 100644 --- a/dix/inpututils.c +++ b/dix/inpututils.c @@ -636,6 +636,19 @@ valuator_mask_drop_unaccelerated(ValuatorMask *mask) mask->has_unaccelerated = FALSE; } +void +valuator_mask_set_absolute_unaccelerated(ValuatorMask *mask, + int valuator, + int absolute, + double unaccel) +{ + BUG_WARN_MSG(mask->last_bit != -1 && !mask->has_unaccelerated, + "Do not mix valuator types, zero mask first\n"); + _valuator_mask_set_double(mask, valuator, absolute); + mask->has_unaccelerated = TRUE; + mask->unaccelerated[valuator] = unaccel; +} + /** * Set both accelerated and unaccelerated value for this mask. */ diff --git a/include/input.h b/include/input.h index e0f6b9b01d97da687781d5878d827d4eeff48f80..c7b1e913c6d7404011daeaf440720c89baad6fc3 100644 --- a/include/input.h +++ b/include/input.h @@ -675,12 +675,15 @@ extern _X_EXPORT Bool valuator_mask_fetch(const ValuatorMask *mask, int valnum, int *val); extern _X_EXPORT Bool valuator_mask_fetch_double(const ValuatorMask *mask, int valnum, double *val); - extern _X_EXPORT Bool valuator_mask_has_unaccelerated(const ValuatorMask *mask); extern _X_EXPORT void valuator_mask_set_unaccelerated(ValuatorMask *mask, int valuator, double accel, double unaccel); +extern _X_EXPORT void valuator_mask_set_absolute_unaccelerated(ValuatorMask *mask, + int valuator, + int absolute, + double unaccel); extern _X_EXPORT double valuator_mask_get_accelerated(const ValuatorMask *mask, int valuator); extern _X_EXPORT double valuator_mask_get_unaccelerated(const ValuatorMask *mask,