dix: Add valuator_mask_set_absolute_unaccelerated

Add a valuator mask setter for setting absolute coordinate combined
with unaccelerated motion deltas. This will later be used by Xwayland
to combine a wl_pointer.motion() event with the unaccelerated delta of
a wp_relative_pointer.relative_motion() event.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Jonas Ådahl 2016-09-13 15:16:57 +08:00 committed by Adam Jackson
parent bbd4854f81
commit 0fae3be068
2 changed files with 17 additions and 1 deletions

View File

@ -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.
*/

View File

@ -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,