[PATCH] Update synaptics to XInput 7 ABI
Peter Hutterer
peter.hutterer at who-t.net
Thu Jun 18 16:49:27 PDT 2009
Thanks for the patch. A few comments though:
On Thu, Jun 18, 2009 at 01:56:49AM -0400, Ben Gamari wrote:
> diff --git a/src/synaptics.c b/src/synaptics.c
> index ff66517..f917d8b 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -69,6 +69,11 @@
> #include <xf86Xinput.h>
> #include <exevents.h>
>
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
> +#include <X11/Xatom.h>
> +#include <xserver-properties.h>
> +#endif
> +
this should strictly be >= 7, since we don't need these parts in earlier
versions.
> #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
> #include "mipointer.h"
> #endif
> @@ -795,6 +800,20 @@ DeviceInit(DeviceIntPtr dev)
> SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
> unsigned char map[SYN_MAX_BUTTONS + 1];
> int i;
> + Atom axis_labels[] = {
> + XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X),
> + XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y),
> + };
> + Atom btn_labels[] = {
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT),
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE),
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT),
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP),
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN),
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_LEFT),
> + XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_RIGHT),
> + // FIXME: I don't know what the other buttons might be
> + };
no // comments please.
also, this part is incorrect. SYN_MAX_BUTTONS is 12, so when you pass this
array into InitPointerDeviceStruct, it'll run over the bounds and produce
bogus data.
fwiw, label of 0 ("None") is permitted.
> @@ -805,6 +824,9 @@ DeviceInit(DeviceIntPtr dev)
>
> InitPointerDeviceStruct((DevicePtr)dev, map,
> SYN_MAX_BUTTONS,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> + btn_labels,
> +#endif
> #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
> miPointerGetMotionEvents,
> #elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3
> @@ -813,21 +835,40 @@ DeviceInit(DeviceIntPtr dev)
> SynapticsCtrl,
> #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
> miPointerGetMotionBufferSize()
> -#else
> +#elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 7
> GetMotionHistorySize(), 2
> +#else
> + GetMotionHistorySize(), 2, axis_labels
> #endif
> );
> /* X valuator */
> if (priv->minx < priv->maxx)
> - xf86InitValuatorAxisStruct(dev, 0, priv->minx, priv->maxx, 1, 0, 1);
> + xf86InitValuatorAxisStruct(dev, 0,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> + axis_labels[0],
> +#endif
> + priv->minx, priv->maxx, 1, 0, 1);
> else
> - xf86InitValuatorAxisStruct(dev, 0, 0, -1, 1, 0, 1);
> + xf86InitValuatorAxisStruct(dev, 0,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> + axis_labels[0],
> +#endif
> + 0, -1, 1, 0, 1);
> xf86InitValuatorDefaults(dev, 0);
> +
> /* Y valuator */
> if (priv->miny < priv->maxy)
> - xf86InitValuatorAxisStruct(dev, 1, priv->miny, priv->maxy, 1, 0, 1);
> + xf86InitValuatorAxisStruct(dev, 1,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> + axis_labels[1],
> +#endif
> + priv->miny, priv->maxy, 1, 0, 1);
> else
> - xf86InitValuatorAxisStruct(dev, 1, 0, -1, 1, 0, 1);
> + xf86InitValuatorAxisStruct(dev, 1,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
> + axis_labels[1],
> +#endif
> + 0, -1, 1, 0, 1);
> xf86InitValuatorDefaults(dev, 1);
>
> #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
messy, hence the need for fd939a37d7df320f76fc772eb1f18eb6ba1d54b9.
How about this one (obviously on top of fd939)?
More information about the xorg
mailing list