mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-08 11:19:14 +02:00
evdev: don't return a width/height if we faked the resolution
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
3264dde8c0
commit
22e86f9322
2 changed files with 8 additions and 2 deletions
|
|
@ -620,6 +620,7 @@ evdev_configure_device(struct evdev_device *device)
|
||||||
fixed = *absinfo;
|
fixed = *absinfo;
|
||||||
fixed.resolution = 1;
|
fixed.resolution = 1;
|
||||||
libevdev_set_abs_info(evdev, ABS_X, &fixed);
|
libevdev_set_abs_info(evdev, ABS_X, &fixed);
|
||||||
|
device->abs.fake_resolution = 1;
|
||||||
}
|
}
|
||||||
device->abs.absinfo_x = absinfo;
|
device->abs.absinfo_x = absinfo;
|
||||||
has_abs = 1;
|
has_abs = 1;
|
||||||
|
|
@ -629,6 +630,7 @@ evdev_configure_device(struct evdev_device *device)
|
||||||
fixed = *absinfo;
|
fixed = *absinfo;
|
||||||
fixed.resolution = 1;
|
fixed.resolution = 1;
|
||||||
libevdev_set_abs_info(evdev, ABS_Y, &fixed);
|
libevdev_set_abs_info(evdev, ABS_Y, &fixed);
|
||||||
|
device->abs.fake_resolution = 1;
|
||||||
}
|
}
|
||||||
device->abs.absinfo_y = absinfo;
|
device->abs.absinfo_y = absinfo;
|
||||||
has_abs = 1;
|
has_abs = 1;
|
||||||
|
|
@ -645,6 +647,7 @@ evdev_configure_device(struct evdev_device *device)
|
||||||
libevdev_set_abs_info(evdev,
|
libevdev_set_abs_info(evdev,
|
||||||
ABS_MT_POSITION_X,
|
ABS_MT_POSITION_X,
|
||||||
&fixed);
|
&fixed);
|
||||||
|
device->abs.fake_resolution = 1;
|
||||||
}
|
}
|
||||||
device->abs.absinfo_x = absinfo;
|
device->abs.absinfo_x = absinfo;
|
||||||
absinfo = libevdev_get_abs_info(evdev, ABS_MT_POSITION_Y);
|
absinfo = libevdev_get_abs_info(evdev, ABS_MT_POSITION_Y);
|
||||||
|
|
@ -654,6 +657,7 @@ evdev_configure_device(struct evdev_device *device)
|
||||||
libevdev_set_abs_info(evdev,
|
libevdev_set_abs_info(evdev,
|
||||||
ABS_MT_POSITION_Y,
|
ABS_MT_POSITION_Y,
|
||||||
&fixed);
|
&fixed);
|
||||||
|
device->abs.fake_resolution = 1;
|
||||||
}
|
}
|
||||||
device->abs.absinfo_y = absinfo;
|
device->abs.absinfo_y = absinfo;
|
||||||
device->is_mt = 1;
|
device->is_mt = 1;
|
||||||
|
|
@ -908,7 +912,8 @@ evdev_device_get_size(struct evdev_device *device,
|
||||||
x = libevdev_get_abs_info(device->evdev, ABS_X);
|
x = libevdev_get_abs_info(device->evdev, ABS_X);
|
||||||
y = libevdev_get_abs_info(device->evdev, ABS_Y);
|
y = libevdev_get_abs_info(device->evdev, ABS_Y);
|
||||||
|
|
||||||
if (!x || !y || !x->resolution || !y->resolution)
|
if (!x || !y || device->abs.fake_resolution ||
|
||||||
|
!x->resolution || !y->resolution)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
*width = evdev_convert_to_mm(x, x->maximum);
|
*width = evdev_convert_to_mm(x, x->maximum);
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,9 @@ struct evdev_device {
|
||||||
int fd;
|
int fd;
|
||||||
struct {
|
struct {
|
||||||
const struct input_absinfo *absinfo_x, *absinfo_y;
|
const struct input_absinfo *absinfo_x, *absinfo_y;
|
||||||
int32_t x, y;
|
int fake_resolution;
|
||||||
|
|
||||||
|
int32_t x, y;
|
||||||
int32_t seat_slot;
|
int32_t seat_slot;
|
||||||
|
|
||||||
int apply_calibration;
|
int apply_calibration;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue