Hi,

Series looks good and is:

Reviewed-by: Hans de Goede <[email protected]>

Regards,

Hans


On 11/05/2014 05:44 AM, Peter Hutterer wrote:
> No functional changes.
> 
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
>  src/evdev.c | 57 ++++++++++++++++++++++++++++++++-------------------------
>  1 file changed, 32 insertions(+), 25 deletions(-)
> 
> diff --git a/src/evdev.c b/src/evdev.c
> index 3aa87a7..ecf105d 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -1038,13 +1038,31 @@ evdev_tag_device(struct evdev_device *device)
>       udev_unref(udev);
>  }
>  
> +static inline int
> +evdev_fix_abs_resolution(struct libevdev *evdev,
> +                      unsigned int code,
> +                      const struct input_absinfo *absinfo)
> +{
> +     struct input_absinfo fixed;
> +
> +     if (absinfo->resolution == 0) {
> +             fixed = *absinfo;
> +             fixed.resolution = 1;
> +             /* libevdev_set_abs_info() changes the absinfo we already
> +                have a pointer to, no need to fetch it again */
> +             libevdev_set_abs_info(evdev, code, &fixed);
> +             return 1;
> +     } else {
> +             return 0;
> +     }
> +}
> +
>  static int
>  evdev_configure_device(struct evdev_device *device)
>  {
>       struct libinput *libinput = device->base.seat->libinput;
>       struct libevdev *evdev = device->evdev;
>       const struct input_absinfo *absinfo;
> -     struct input_absinfo fixed;
>       int has_abs, has_rel, has_mt;
>       int has_button, has_keyboard, has_touch;
>       struct mt_slot *slots;
> @@ -1063,22 +1081,18 @@ evdev_configure_device(struct evdev_device *device)
>       if (libevdev_has_event_type(evdev, EV_ABS)) {
>  
>               if ((absinfo = libevdev_get_abs_info(evdev, ABS_X))) {
> -                     if (absinfo->resolution == 0) {
> -                             fixed = *absinfo;
> -                             fixed.resolution = 1;
> -                             libevdev_set_abs_info(evdev, ABS_X, &fixed);
> +                     if (evdev_fix_abs_resolution(evdev,
> +                                                  ABS_X,
> +                                                  absinfo))
>                               device->abs.fake_resolution = 1;
> -                     }
>                       device->abs.absinfo_x = absinfo;
>                       has_abs = 1;
>               }
>               if ((absinfo = libevdev_get_abs_info(evdev, ABS_Y))) {
> -                     if (absinfo->resolution == 0) {
> -                             fixed = *absinfo;
> -                             fixed.resolution = 1;
> -                             libevdev_set_abs_info(evdev, ABS_Y, &fixed);
> +                     if (evdev_fix_abs_resolution(evdev,
> +                                                  ABS_Y,
> +                                                  absinfo))
>                               device->abs.fake_resolution = 1;
> -                     }
>                       device->abs.absinfo_y = absinfo;
>                       has_abs = 1;
>               }
> @@ -1088,24 +1102,17 @@ evdev_configure_device(struct evdev_device *device)
>               if (libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_X) &&
>                   libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_Y)) {
>                       absinfo = libevdev_get_abs_info(evdev, 
> ABS_MT_POSITION_X);
> -                     if (absinfo->resolution == 0) {
> -                             fixed = *absinfo;
> -                             fixed.resolution = 1;
> -                             libevdev_set_abs_info(evdev,
> -                                                   ABS_MT_POSITION_X,
> -                                                   &fixed);
> +                     if (evdev_fix_abs_resolution(evdev,
> +                                                  ABS_MT_POSITION_X,
> +                                                  absinfo))
>                               device->abs.fake_resolution = 1;
> -                     }
>                       device->abs.absinfo_x = absinfo;
> +
>                       absinfo = libevdev_get_abs_info(evdev, 
> ABS_MT_POSITION_Y);
> -                     if (absinfo->resolution == 0) {
> -                             fixed = *absinfo;
> -                             fixed.resolution = 1;
> -                             libevdev_set_abs_info(evdev,
> -                                                   ABS_MT_POSITION_Y,
> -                                                   &fixed);
> +                     if (evdev_fix_abs_resolution(evdev,
> +                                                  ABS_MT_POSITION_Y,
> +                                                  absinfo))
>                               device->abs.fake_resolution = 1;
> -                     }
>                       device->abs.absinfo_y = absinfo;
>                       device->is_mt = 1;
>                       has_touch = 1;
> 
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to