[PATCH evdev 1/5] Require multitouch/smooth scrolling dependencies

Hans de Goede hdegoede at redhat.com
Wed Mar 11 04:45:23 PDT 2015


Hi,

All patches in this series look good and are:

Reviewed-by: Hans de Goede <hdegoede at redhat.com>

Regards,

Hans


On 11-03-15 06:53, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>   configure.ac | 12 ++------
>   src/evdev.c  | 93 ------------------------------------------------------------
>   src/evdev.h  | 16 -----------
>   3 files changed, 2 insertions(+), 119 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 46f3dc7..e53177e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -44,19 +44,11 @@ XORG_MACROS_VERSION(1.8)
>   XORG_DEFAULT_OPTIONS
>
>   # Obtain compiler/linker options from server and required extensions
> -PKG_CHECK_MODULES(XORG, [xorg-server >= 1.10] xproto inputproto)
> +PKG_CHECK_MODULES(XORG, [xorg-server >= 1.12] xproto [inputproto >= 2.1.99.3])
>   PKG_CHECK_MODULES(UDEV, libudev)
>
> -PKG_CHECK_MODULES(XI22, [inputproto >= 2.1.99.3] [xorg-server >= 1.11.99.901], HAVE_XI22="yes", HAVE_XI22="no")
>   PKG_CHECK_MODULES(LIBEVDEV, [libevdev >= 0.4])
> -
> -if test "x$HAVE_XI22" = xyes; then
> -        # Obtain compiler/linker options for mtdev
> -        PKG_CHECK_MODULES(MTDEV, mtdev, HAVE_MTDEV="yes", HAVE_MTDEV="no")
> -fi
> -if test "x$HAVE_XI22" = xyes && test "x$HAVE_MTDEV" = xyes; then
> -        AC_DEFINE(MULTITOUCH, 1, [XI2.2 available])
> -fi
> +PKG_CHECK_MODULES(MTDEV, mtdev, HAVE_MTDEV="yes", HAVE_MTDEV="no")
>
>   # Define a configure option for an alternate input module directory
>   AC_ARG_WITH(xorg-module-dir,
> diff --git a/src/evdev.c b/src/evdev.c
> index 9c1a4d3..af691f5 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -53,9 +53,7 @@
>   #include <X11/Xatom.h>
>   #include <evdev-properties.h>
>   #include <xserver-properties.h>
> -#ifdef MULTITOUCH
>   #include <mtdev-plumbing.h>
> -#endif
>
>   #ifndef XI_PROP_PRODUCT_ID
>   #define XI_PROP_PRODUCT_ID "Device Product ID"
> @@ -259,12 +257,6 @@ out:
>       return rc;
>   }
>
> -#ifndef HAVE_SMOOTH_SCROLLING
> -static int wheel_up_button = 4;
> -static int wheel_down_button = 5;
> -static int wheel_left_button = 6;
> -static int wheel_right_button = 7;
> -#endif
>
>   static EventQueuePtr
>   EvdevNextInQueue(InputInfoPtr pInfo)
> @@ -325,7 +317,6 @@ EvdevQueueProximityEvent(InputInfoPtr pInfo, int value)
>       }
>   }
>
> -#ifdef MULTITOUCH
>   void
>   EvdevQueueTouchEvent(InputInfoPtr pInfo, unsigned int touch, ValuatorMask *mask,
>                        uint16_t evtype)
> @@ -339,7 +330,6 @@ EvdevQueueTouchEvent(InputInfoPtr pInfo, unsigned int touch, ValuatorMask *mask,
>           pQueue->val = evtype;
>       }
>   }
> -#endif
>
>   /**
>    * Post button event right here, right now.
> @@ -611,23 +601,6 @@ EvdevProcessRelativeMotionEvent(InputInfoPtr pInfo, struct input_event *ev)
>       value = ev->value;
>
>       switch (ev->code) {
> -#ifndef HAVE_SMOOTH_SCROLLING
> -        case REL_WHEEL:
> -            if (value > 0)
> -                EvdevQueueButtonClicks(pInfo, wheel_up_button, value);
> -            else if (value < 0)
> -                EvdevQueueButtonClicks(pInfo, wheel_down_button, -value);
> -            break;
> -
> -        case REL_DIAL:
> -        case REL_HWHEEL:
> -            if (value > 0)
> -                EvdevQueueButtonClicks(pInfo, wheel_right_button, value);
> -            else if (value < 0)
> -                EvdevQueueButtonClicks(pInfo, wheel_left_button, -value);
> -            break;
> -        /* We don't post wheel events as axis motion. */
> -#endif
>           default:
>               /* Ignore EV_REL events if we never set up for them. */
>               if (!(pEvdev->flags & EVDEV_RELATIVE_EVENTS) &&
> @@ -650,7 +623,6 @@ EvdevProcessRelativeMotionEvent(InputInfoPtr pInfo, struct input_event *ev)
>       }
>   }
>
> -#ifdef MULTITOUCH
>   static void
>   EvdevProcessTouch(InputInfoPtr pInfo)
>   {
> @@ -763,10 +735,6 @@ EvdevProcessTouchEvent(InputInfoPtr pInfo, struct input_event *ev)
>           }
>       }
>   }
> -#else
> -#define EvdevProcessTouch(pInfo)
> -#define EvdevProcessTouchEvent(pInfo, ev)
> -#endif /* MULTITOUCH */
>
>   /**
>    * Take the absolute motion input event and process it accordingly.
> @@ -913,9 +881,7 @@ EvdevPostProximityEvents(InputInfoPtr pInfo, int which)
>           switch (pEvdev->queue[i].type) {
>               case EV_QUEUE_KEY:
>               case EV_QUEUE_BTN:
> -#ifdef MULTITOUCH
>               case EV_QUEUE_TOUCH:
> -#endif
>                   break;
>               case EV_QUEUE_PROXIMITY:
>                   if (pEvdev->queue[i].val == which)
> @@ -955,13 +921,11 @@ static void EvdevPostQueuedEvents(InputInfoPtr pInfo)
>               break;
>           case EV_QUEUE_PROXIMITY:
>               break;
> -#ifdef MULTITOUCH
>           case EV_QUEUE_TOUCH:
>               xf86PostTouchEvent(pInfo->dev, pEvdev->queue[i].detail.touch,
>                                  pEvdev->queue[i].val, 0,
>                                  pEvdev->queue[i].touchMask);
>               break;
> -#endif
>           }
>       }
>   }
> @@ -1033,9 +997,7 @@ EvdevProcessEvent(InputInfoPtr pInfo, struct input_event *ev)
>   static void
>   EvdevFreeMasks(EvdevPtr pEvdev)
>   {
> -#ifdef MULTITOUCH
>       int i;
> -#endif
>
>       free(pEvdev->slots);
>       pEvdev->slots = NULL;
> @@ -1043,7 +1005,6 @@ EvdevFreeMasks(EvdevPtr pEvdev)
>       valuator_mask_free(&pEvdev->rel_vals);
>       valuator_mask_free(&pEvdev->old_vals);
>       valuator_mask_free(&pEvdev->prox);
> -#ifdef MULTITOUCH
>       valuator_mask_free(&pEvdev->mt_mask);
>       if (pEvdev->last_mt_vals)
>       {
> @@ -1054,10 +1015,8 @@ EvdevFreeMasks(EvdevPtr pEvdev)
>       }
>       for (i = 0; i < EVDEV_MAXQUEUE; i++)
>           valuator_mask_free(&pEvdev->queue[i].touchMask);
> -#endif
>   }
>
> -#ifdef MULTITOUCH
>   static void
>   EvdevHandleMTDevEvent(InputInfoPtr pInfo, struct input_event *ev)
>   {
> @@ -1072,7 +1031,6 @@ EvdevHandleMTDevEvent(InputInfoPtr pInfo, struct input_event *ev)
>           }
>       }
>   }
> -#endif
>
>   static void
>   EvdevReadInput(InputInfoPtr pInfo)
> @@ -1091,21 +1049,17 @@ EvdevReadInput(InputInfoPtr pInfo)
>                                          strerror(-rc));
>               break;
>           } else if (rc == LIBEVDEV_READ_STATUS_SUCCESS) {
> -#ifdef MULTITOUCH
>               if (pEvdev->mtdev)
>                   EvdevHandleMTDevEvent(pInfo, &ev);
>               else
> -#endif
>                   EvdevProcessEvent(pInfo, &ev);
>           }
>           else { /* SYN_DROPPED */
>               rc = libevdev_next_event(pEvdev->dev, LIBEVDEV_READ_FLAG_SYNC, &ev);
>               while (rc == LIBEVDEV_READ_STATUS_SYNC) {
> -#ifdef MULTITOUCH
>                   if (pEvdev->mtdev)
>                       EvdevHandleMTDevEvent(pInfo, &ev);
>                   else
> -#endif
>                       EvdevProcessEvent(pInfo, &ev);
>                   rc = libevdev_next_event(pEvdev->dev, LIBEVDEV_READ_FLAG_SYNC, &ev);
>               }
> @@ -1179,7 +1133,6 @@ EvdevAddKeyClass(DeviceIntPtr device)
>       return rc;
>   }
>
> -#ifdef MULTITOUCH
>   /* MT axes are counted twice - once as ABS_X (which the kernel keeps for
>    * backwards compatibility), once as ABS_MT_POSITION_X. So we need to keep a
>    * mapping of those axes to make sure we only count them once
> @@ -1197,7 +1150,6 @@ static struct mt_axis_mappings mt_axis_mappings[] = {
>       {ABS_MT_PRESSURE, ABS_PRESSURE},
>       {ABS_MT_DISTANCE, ABS_DISTANCE},
>   };
> -#endif
>
>   /**
>    * return TRUE if the axis is not one we should count as true axis
> @@ -1243,7 +1195,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>       if (num_axes < 1)
>           goto out;
>
> -#ifdef MULTITOUCH
>       /* Android drivers often have ABS_MT_POSITION_X but not ABS_X.
>          Loop over the MT->legacy axis table and add fake axes. */
>       for (i = 0; i < ArrayLength(mt_axis_mappings); i++)
> @@ -1303,12 +1254,9 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>           goto out;
>       }
>
> -#endif
>
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>       num_axes += num_scroll_axes;
> -#endif
>
>       if (num_axes + num_mt_axes > MAX_VALUATORS) {
>           xf86IDrvMsg(pInfo, X_WARNING, "found %d axes, limiting to %d.\n", num_axes, MAX_VALUATORS);
> @@ -1336,7 +1284,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>           }
>       }
>
> -#ifdef MULTITOUCH
>       if (num_mt_axes_total > 0) {
>           int nslots = num_slots(pEvdev);
>
> @@ -1387,14 +1334,11 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>               }
>           }
>       }
> -#endif
>       atoms = malloc((pEvdev->num_vals + num_mt_axes) * sizeof(Atom));
>
>       i = 0;
>       for (axis = ABS_X; i < MAX_VALUATORS && axis <= ABS_MAX; axis++) {
> -#ifdef MULTITOUCH
>           int j;
> -#endif
>           pEvdev->abs_axis_map[axis] = -1;
>           if (!libevdev_has_event_code(pEvdev->dev, EV_ABS, axis) ||
>               is_blacklisted_axis(axis))
> @@ -1402,7 +1346,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>
>           mapping = i;
>
> -#ifdef MULTITOUCH
>           for (j = 0; j < ArrayLength(mt_axis_mappings); j++)
>           {
>               if (mt_axis_mappings[j].code == axis)
> @@ -1411,13 +1354,11 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>                       mt_axis_mappings[j].needs_mapping)
>                   mapping = mt_axis_mappings[j].mapping;
>           }
> -#endif
>           pEvdev->abs_axis_map[axis] = mapping;
>           if (mapping == i)
>               i++;
>       }
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>       if (num_scroll_axes > 0)
>       {
>           mapping++; /* continue from abs axis mapping */
> @@ -1429,7 +1370,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>           if (libevdev_has_event_code(pEvdev->dev, EV_REL, REL_WHEEL))
>               pEvdev->rel_axis_map[REL_WHEEL] = mapping++;
>       }
> -#endif
>
>       EvdevInitAxesLabels(pEvdev, Absolute, pEvdev->num_vals + num_mt_axes, atoms);
>
> @@ -1439,7 +1379,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>           goto out;
>       }
>
> -#ifdef MULTITOUCH
>       if (num_mt_axes_total > 0)
>       {
>           int num_touches = 0;
> @@ -1467,7 +1406,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>               }
>           }
>       }
> -#endif
>
>       for (axis = ABS_X; axis < ABS_MT_SLOT; axis++) {
>           const struct input_absinfo *abs;
> @@ -1491,7 +1429,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>           xf86InitValuatorDefaults(device, axnum);
>       }
>
> -#ifdef MULTITOUCH
>       for (axis = ABS_MT_TOUCH_MAJOR; axis <= ABS_MAX; axis++) {
>           const struct input_absinfo *abs;
>           int axnum = pEvdev->abs_axis_map[axis];
> @@ -1525,9 +1462,7 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>                                      resolution, 0, resolution,
>                                      Absolute);
>       }
> -#endif
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>       if (num_scroll_axes)
>       {
>           int idx;
> @@ -1573,7 +1508,6 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>                                 SCROLL_FLAG_NONE);
>           }
>       }
> -#endif
>
>       free(atoms);
>
> @@ -1629,7 +1563,6 @@ out:
>   static int
>   EvdevSetScrollValuators(DeviceIntPtr device)
>   {
> -#ifdef HAVE_SMOOTH_SCROLLING
>       InputInfoPtr pInfo;
>       EvdevPtr pEvdev;
>       int axnum;
> @@ -1657,7 +1590,6 @@ EvdevSetScrollValuators(DeviceIntPtr device)
>                             pEvdev->smoothScroll.horiz_delta,
>                             SCROLL_FLAG_NONE);
>       }
> -#endif
>
>       return Success;
>   }
> @@ -1690,9 +1622,7 @@ EvdevAddRelValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>           (num_scroll_axes == 0 || pEvdev->flags & EVDEV_ABSOLUTE_EVENTS))
>               goto out;
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>       num_axes += num_scroll_axes;
> -#endif
>
>       if (num_axes > MAX_VALUATORS) {
>           xf86IDrvMsg(pInfo, X_WARNING, "found %d axes, limiting to %d.\n", num_axes, MAX_VALUATORS);
> @@ -1710,11 +1640,6 @@ EvdevAddRelValuatorClass(DeviceIntPtr device, int num_scroll_axes)
>       for (axis = REL_X, map = 0; map < MAX_VALUATORS && axis <= REL_MAX; axis++)
>       {
>           pEvdev->rel_axis_map[axis] = -1;
> -#ifndef HAVE_SMOOTH_SCROLLING
> -        /* We don't post wheel events, so ignore them here too */
> -        if (axis == REL_WHEEL || axis == REL_HWHEEL || axis == REL_DIAL)
> -            continue;
> -#endif
>           if (!libevdev_has_event_code(pEvdev->dev, EV_REL, axis))
>               continue;
>           pEvdev->rel_axis_map[axis] = map;
> @@ -1835,14 +1760,12 @@ EvdevCountScrollAxes(EvdevPtr pEvdev)
>   {
>       int num_scroll_axes = 0;
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>       if (libevdev_has_event_code(pEvdev->dev, EV_REL, REL_WHEEL))
>           num_scroll_axes++;
>       if (libevdev_has_event_code(pEvdev->dev, EV_REL, REL_HWHEEL))
>           num_scroll_axes++;
>       if (libevdev_has_event_code(pEvdev->dev, EV_REL, REL_DIAL))
>           num_scroll_axes++;
> -#endif
>
>       return num_scroll_axes;
>   }
> @@ -2243,14 +2166,12 @@ EvdevProbe(InputInfoPtr pInfo)
>           }
>       }
>
> -#ifdef MULTITOUCH
>       for (i = ABS_MT_SLOT; i < ABS_MAX; i++) {
>           if (libevdev_has_event_code(pEvdev->dev, EV_ABS, i)) {
>               has_mt = TRUE;
>               break;
>           }
>       }
> -#endif
>
>       if (ignore_abs && has_abs_axes)
>       {
> @@ -2307,10 +2228,8 @@ EvdevProbe(InputInfoPtr pInfo)
>                       pEvdev->flags |= EVDEV_BUTTON_EVENTS;
>               }
>           } else {
> -#ifdef MULTITOUCH
>               if (!libevdev_has_event_code(pEvdev->dev, EV_ABS, ABS_MT_POSITION_X) ||
>                   !libevdev_has_event_code(pEvdev->dev, EV_ABS, ABS_MT_POSITION_Y))
> -#endif
>                   EvdevForceXY(pInfo, Absolute);
>           }
>       }
> @@ -2384,14 +2303,12 @@ EvdevProbe(InputInfoPtr pInfo)
>           pEvdev->flags |= EVDEV_BUTTON_EVENTS;
>           pEvdev->flags |= EVDEV_RELATIVE_EVENTS;
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>           pEvdev->smoothScroll.vert_delta =
>               xf86SetIntOption(pInfo->options, "VertScrollDelta", 1);
>           pEvdev->smoothScroll.horiz_delta =
>               xf86SetIntOption(pInfo->options, "HorizScrollDelta", 1);
>           pEvdev->smoothScroll.dial_delta =
>               xf86SetIntOption(pInfo->options, "DialDelta", 1);
> -#endif
>       }
>
>   out:
> @@ -2421,7 +2338,6 @@ EvdevSetCalibration(InputInfoPtr pInfo, int num_calibration, int calibration[4])
>       }
>   }
>
> -#ifdef MULTITOUCH
>   /**
>    * Open an mtdev device for this device. mtdev is a bit too generous with
>    * memory usage, so only do so for multitouch protocol A devices.
> @@ -2470,7 +2386,6 @@ EvdevOpenMTDev(InputInfoPtr pInfo)
>
>       return TRUE;
>   }
> -#endif
>
>   static int
>   EvdevOpenDevice(InputInfoPtr pInfo)
> @@ -2528,13 +2443,11 @@ EvdevOpenDevice(InputInfoPtr pInfo)
>           return BadMatch;
>       }
>
> -#ifdef MULTITOUCH
>       if (!EvdevOpenMTDev(pInfo)) {
>           xf86Msg(X_ERROR, "%s: Couldn't open mtdev device\n", pInfo->name);
>           EvdevCloseDevice(pInfo);
>           return BadValue;
>       }
> -#endif
>
>       return Success;
>   }
> @@ -2549,13 +2462,11 @@ EvdevCloseDevice(InputInfoPtr pInfo)
>           pInfo->fd = -1;
>       }
>
> -#ifdef MULTITOUCH
>       if (pEvdev->mtdev)
>       {
>           mtdev_close_delete(pEvdev->mtdev);
>           pEvdev->mtdev = NULL;
>       }
> -#endif
>
>   }
>
> @@ -2600,9 +2511,7 @@ EvdevAlloc(InputInfoPtr pInfo)
>       pEvdev->in_proximity = 1;
>       pEvdev->use_proximity = 1;
>
> -#ifdef MULTITOUCH
>       pEvdev->cur_slot = -1;
> -#endif
>
>       for (i = 0; i < ArrayLength(pEvdev->rel_axis_map); i++)
>           pEvdev->rel_axis_map[i] = -1;
> @@ -2964,7 +2873,6 @@ EvdevInitProperty(DeviceIntPtr dev)
>               XISetDevicePropertyDeletable(dev, prop_btn_label, FALSE);
>           }
>
> -#ifdef HAVE_SMOOTH_SCROLLING
>           {
>               int smooth_scroll_values[3] = {
>                   pEvdev->smoothScroll.vert_delta,
> @@ -2977,7 +2885,6 @@ EvdevInitProperty(DeviceIntPtr dev)
>                                      PropModeReplace, 3, smooth_scroll_values, FALSE);
>               XISetDevicePropertyDeletable(dev, prop_scroll_dist, FALSE);
>           }
> -#endif
>
>       }
>
> diff --git a/src/evdev.h b/src/evdev.h
> index 6e5bce9..4aa7652 100644
> --- a/src/evdev.h
> +++ b/src/evdev.h
> @@ -43,9 +43,7 @@
>   #include <xf86_OSproc.h>
>   #include <xkbstr.h>
>
> -#ifdef MULTITOUCH
>   #include <mtdev.h>
> -#endif
>
>   #include <libevdev/libevdev.h>
>
> @@ -65,10 +63,6 @@
>   #define LED_CNT (LED_MAX+1)
>   #endif
>
> -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 14
> -#define HAVE_SMOOTH_SCROLLING 1
> -#endif
> -
>   #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 18
>   #define LogMessageVerbSigSafe xf86MsgVerb
>   #endif
> @@ -135,20 +129,14 @@ typedef struct {
>           EV_QUEUE_KEY,	/* xf86PostKeyboardEvent() */
>           EV_QUEUE_BTN,	/* xf86PostButtonEvent() */
>           EV_QUEUE_PROXIMITY, /* xf86PostProximityEvent() */
> -#ifdef MULTITOUCH
>           EV_QUEUE_TOUCH,	/*xf86PostTouchEvent() */
> -#endif
>       } type;
>       union {
>           int key;	/* May be either a key code or button number. */
> -#ifdef MULTITOUCH
>           unsigned int touch; /* Touch ID */
> -#endif
>       } detail;
>       int val;	/* State of the key/button/touch; pressed or released. */
> -#ifdef MULTITOUCH
>       ValuatorMask *touchMask;
> -#endif
>   } EventQueueRec, *EventQueuePtr;
>
>   typedef struct {
> @@ -172,9 +160,7 @@ typedef struct {
>           int dirty;
>           enum SlotState state;
>       } *slots;
> -#ifdef MULTITOUCH
>       struct mtdev *mtdev;
> -#endif
>
>       int flags;
>       int in_proximity;           /* device in proximity */
> @@ -259,10 +245,8 @@ typedef struct {
>   void EvdevQueueKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value);
>   void EvdevQueueButtonEvent(InputInfoPtr pInfo, int button, int value);
>   void EvdevQueueProximityEvent(InputInfoPtr pInfo, int value);
> -#ifdef MULTITOUCH
>   void EvdevQueueTouchEvent(InputInfoPtr pInfo, unsigned int touch,
>                             ValuatorMask *mask, uint16_t type);
> -#endif
>   void EvdevPostButtonEvent(InputInfoPtr pInfo, int button, enum ButtonAction act);
>   void EvdevQueueButtonClicks(InputInfoPtr pInfo, int button, int count);
>   void EvdevPostRelativeMotionEvents(InputInfoPtr pInfo);
>


More information about the xorg-devel mailing list