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
