|
From: Ping C. <pin...@gm...> - 2010-06-01 05:15:51
|
Acked-by: Ping Cheng <pin...@gm...>
Ping
On Mon, May 31, 2010 at 8:41 PM, Peter Hutterer
<pet...@wh...> wrote:
> This allows for the configuration of dependent devices by creating the
> appropriate match rules. Note that for the input attributes - just as for
> the device name - the type is simply appended to the end of the product
> name.
>
> Signed-off-by: Peter Hutterer <pet...@wh...>
> ---
> Note, this is the patch I sent out as RFC a few days or weeks back. Some
> parts (duplication of attributes) have moved into the server, making the
> patch a lot simpler.
>
> This requires an X server from git master.
>
> src/wcmValidateDevice.c | 33 ++++++++++++++++++++++++++++++++-
> 1 files changed, 32 insertions(+), 1 deletions(-)
>
> diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c
> index eddc113..61abd8c 100644
> --- a/src/wcmValidateDevice.c
> +++ b/src/wcmValidateDevice.c
> @@ -300,6 +300,26 @@ static void wcmFreeInputOpts(InputOption* opts)
> }
> }
>
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +/**
> + * Duplicate the attributes of the given device. "product" gets the type
> + * appended, so a device of product "Wacom" will then have a product "Wacom
> + * eraser", "Wacom cursor", etc.
> + */
> +static InputAttributes* wcmDuplicateAttributes(LocalDevicePtr local,
> + const char *type)
> +{
> + InputAttributes *attr;
> + attr = DuplicateInputAttributes(local->attrs);
> + /* add one space, one \0 */
> + attr->product = realloc(attr->product, strlen(attr->product) + strlen(type) + 2);
> + strcat(attr->product, " ");
> + strcat(attr->product, type);
> +
> + return attr;
> +}
> +#endif
> +
> /**
> * Hotplug one device of the given type.
> * Device has the same options as the "parent" device, type is one of
> @@ -310,15 +330,26 @@ static void wcmHotplug(LocalDevicePtr local, const char *type)
> {
> DeviceIntPtr dev; /* dummy */
> InputOption *input_options;
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 9
> + InputAttributes *attrs = NULL;
> +#endif
>
> input_options = wcmOptionDupConvert(local, type);
>
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> + attrs = wcmDuplicateAttributes(local, type);
> +#endif
> +
> NewInputDeviceRequest(input_options,
> #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 9
> - NULL,
> + attrs,
> #endif
> &dev);
> wcmFreeInputOpts(input_options);
> +
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> + FreeInputAttributes(attrs);
> +#endif
> }
>
> void wcmHotplugOthers(LocalDevicePtr local)
> --
> 1.6.5.2
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Linuxwacom-devel mailing list
> Lin...@li...
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
>
|