[PATCH libinput] udev: prepend the libinput group with the product string
Hans de Goede
hdegoede at redhat.com
Mon Jun 22 02:03:21 PDT 2015
Hi,
On 22-06-15 04:03, Peter Hutterer wrote:
> Multiple devices plugged into the same USB hub have the same
> PHYS path and are assigned to the same group.
>
> Prepend the content of the PRODUCT env to the phys path, this at least ensures
> that different devices are never grouped together.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=89802
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
LGTM: Reviewed-by: Hans de Goede <hdegoede at redhat.com>
Regards,
Hans
> ---
> udev/libinput-device-group.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/udev/libinput-device-group.c b/udev/libinput-device-group.c
> index 50bfbe0..adbd6b7 100644
> --- a/udev/libinput-device-group.c
> +++ b/udev/libinput-device-group.c
> @@ -10,8 +10,9 @@ int main(int argc, char **argv)
> struct udev_device *device = NULL;
> const char *syspath,
> *phys = NULL;
> - char *group,
> - *str;
> + const char *product;
> + char group[1024];
> + char *str;
>
> if (argc != 2)
> return 1;
> @@ -45,9 +46,12 @@ int main(int argc, char **argv)
> if (!phys)
> goto out;
>
> - group = strdup(phys);
> - if (!group)
> - goto out;
> + /* udev sets PRODUCT on the same device we find PHYS on, let's rely
> + on that*/
> + product = udev_device_get_property_value(device, "PRODUCT");
> + if (!product)
> + product = "";
> + snprintf(group, sizeof(group), "%s:%s", product, phys);
>
> str = strstr(group, "/input");
> if (str)
> @@ -64,7 +68,6 @@ int main(int argc, char **argv)
> *str = '\0';
>
> printf("%s\n", group);
> - free(group);
>
> rc = 0;
> out:
>
More information about the wayland-devel
mailing list