[PATCH xf86-input-libinput 2/3] Move axis value calculation into a helper function
Peter Hutterer
peter.hutterer at who-t.net
Mon Nov 28 23:25:01 UTC 2016
The only difference here is the axis number.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
src/xf86libinput.c | 52 +++++++++++++++++++++++++++++++++-------------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/src/xf86libinput.c b/src/xf86libinput.c
index 324bfc8..7f61e9b 100644
--- a/src/xf86libinput.c
+++ b/src/xf86libinput.c
@@ -1320,6 +1320,31 @@ xf86libinput_handle_key(InputInfoPtr pInfo, struct libinput_event_keyboard *even
xf86PostKeyboardEvent(dev, key, is_press);
}
+static inline bool
+calculate_axis_value(struct xf86libinput *driver_data,
+ enum libinput_pointer_axis axis,
+ struct libinput_event_pointer *event,
+ double *value_out)
+{
+ enum libinput_pointer_axis_source source;
+ double value;
+
+ if (!libinput_event_pointer_has_axis(event, axis))
+ return false;
+
+ source = libinput_event_pointer_get_axis_source(event);
+ if (source == LIBINPUT_POINTER_AXIS_SOURCE_WHEEL) {
+ value = libinput_event_pointer_get_axis_value_discrete(event, axis);
+ value *= driver_data->scroll.vdist;
+ } else {
+ value = libinput_event_pointer_get_axis_value(event, axis);
+ }
+
+ *value_out = value;
+
+ return true;
+}
+
static void
xf86libinput_handle_axis(InputInfoPtr pInfo, struct libinput_event_pointer *event)
{
@@ -1327,7 +1352,6 @@ xf86libinput_handle_axis(InputInfoPtr pInfo, struct libinput_event_pointer *even
struct xf86libinput *driver_data = pInfo->private;
ValuatorMask *mask = driver_data->valuators;
double value;
- enum libinput_pointer_axis axis;
enum libinput_pointer_axis_source source;
if ((driver_data->capabilities & CAP_POINTER) == 0)
@@ -1345,30 +1369,20 @@ xf86libinput_handle_axis(InputInfoPtr pInfo, struct libinput_event_pointer *even
return;
}
- axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL;
- if (libinput_event_pointer_has_axis(event, axis)) {
- if (source == LIBINPUT_POINTER_AXIS_SOURCE_WHEEL) {
- value = libinput_event_pointer_get_axis_value_discrete(event, axis);
- value *= driver_data->scroll.vdist;
- } else {
- value = libinput_event_pointer_get_axis_value(event, axis);
- }
+ if (calculate_axis_value(driver_data,
+ LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL,
+ event,
+ &value))
valuator_mask_set_double(mask, 3, value);
- }
if (!driver_data->options.horiz_scrolling_enabled)
goto out;
- axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL;
- if (libinput_event_pointer_has_axis(event, axis)) {
- if (source == LIBINPUT_POINTER_AXIS_SOURCE_WHEEL) {
- value = libinput_event_pointer_get_axis_value_discrete(event, axis);
- value *= driver_data->scroll.hdist;
- } else {
- value = libinput_event_pointer_get_axis_value(event, axis);
- }
+ if (calculate_axis_value(driver_data,
+ LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL,
+ event,
+ &value))
valuator_mask_set_double(mask, 2, value);
- }
out:
xf86PostMotionEventM(dev, Relative, mask);
--
2.9.3
More information about the xorg-devel
mailing list