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:
Peter Hutterer 2014-07-24 16:15:43 +10:00
parent 3264dde8c0
commit 22e86f9322
2 changed files with 8 additions and 2 deletions

View file

@ -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);

View file

@ -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;