Merge branch 'CR_6950_weston_calibrate_coords_Leo.Lu' into 'jh7110-devel'
CR_6950_weston_calibrate_coords_Leo.Lu See merge request sdk/buildroot!126
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
Weston calibrate coordinate for touch event.
|
||||
|
||||
Signed-off-by: Leo Lu <leo.lu@starfivetech.com>
|
||||
|
||||
--- a/libweston/libinput-device.c 2023-08-29 09:50:15.351292430 +0800
|
||||
+++ b/libweston/libinput-device.c 2023-08-29 16:50:45.075771603 +0800
|
||||
@@ -445,25 +445,32 @@ handle_touch_with_coords(struct libinput
|
||||
double x;
|
||||
double y;
|
||||
struct weston_point2d_device_normalized norm;
|
||||
- uint32_t width, height;
|
||||
struct timespec time;
|
||||
int32_t slot;
|
||||
+ struct weston_output *primary = NULL;
|
||||
|
||||
if (!device->output)
|
||||
return;
|
||||
-
|
||||
+
|
||||
+ primary = wl_container_of(device->output->compositor->output_list.next,
|
||||
+ primary,link);
|
||||
+ if (!primary)
|
||||
+ return;
|
||||
+
|
||||
timespec_from_usec(&time,
|
||||
libinput_event_touch_get_time_usec(touch_event));
|
||||
slot = libinput_event_touch_get_seat_slot(touch_event);
|
||||
|
||||
- width = device->output->current_mode->width;
|
||||
- height = device->output->current_mode->height;
|
||||
- x = libinput_event_touch_get_x_transformed(touch_event, width);
|
||||
- y = libinput_event_touch_get_y_transformed(touch_event, height);
|
||||
+ x = libinput_event_touch_get_x(touch_event);
|
||||
+ y = libinput_event_touch_get_y(touch_event);
|
||||
|
||||
- weston_output_transform_coordinate(device->output,
|
||||
- x, y, &x, &y);
|
||||
+ if (!strncmp(primary->name, "HDMI", strlen("HDMI")))
|
||||
+ x += primary->width;
|
||||
+
|
||||
|
||||
+ weston_output_transform_coordinate(primary,
|
||||
+ x, y, &x, &y);
|
||||
+
|
||||
if (weston_touch_device_can_calibrate(device->touch_device)) {
|
||||
norm.x = libinput_event_touch_get_x_transformed(touch_event, 1);
|
||||
norm.y = libinput_event_touch_get_y_transformed(touch_event, 1);
|
||||
@@ -472,6 +479,8 @@ handle_touch_with_coords(struct libinput
|
||||
} else {
|
||||
notify_touch(device->touch_device, &time, slot, x, y, touch_type);
|
||||
}
|
||||
+
|
||||
+
|
||||
}
|
||||
|
||||
static void
|
||||
Reference in New Issue
Block a user