touch-calibrator of weston 13.0.1 does not work, backport the fix from
upstream:
https://gitlab.freedesktop.org/wayland/weston/-/commit/a5c5702112a9ccbf6abbbaac6078982f5f84bb2e

this issue only impact weston 13.0.1, has been fixed in 14.0.1.

Signed-off-by: Ming Liu <[email protected]>
---
 ...ator-Regularise-surface-view-mapping.patch | 78 +++++++++++++++++++
 .../recipes-graphics/wayland/weston_13.0.1.bb |  1 +
 2 files changed, 79 insertions(+)
 create mode 100644 
meta/recipes-graphics/wayland/weston/0001-touch-calibrator-Regularise-surface-view-mapping.patch

diff --git 
a/meta/recipes-graphics/wayland/weston/0001-touch-calibrator-Regularise-surface-view-mapping.patch
 
b/meta/recipes-graphics/wayland/weston/0001-touch-calibrator-Regularise-surface-view-mapping.patch
new file mode 100644
index 0000000000..36e74fbfde
--- /dev/null
+++ 
b/meta/recipes-graphics/wayland/weston/0001-touch-calibrator-Regularise-surface-view-mapping.patch
@@ -0,0 +1,78 @@
+From a5c5702112a9ccbf6abbbaac6078982f5f84bb2e Mon Sep 17 00:00:00 2001
+From: Daniel Stone <[email protected]>
+Date: Thu, 23 Nov 2023 16:44:10 +0000
+Subject: [PATCH] touch-calibrator: Regularise surface/view mapping
+
+Upstream-Status: Backport 
[https://gitlab.freedesktop.org/wayland/weston/-/commit/a5c5702112a9ccbf6abbbaac6078982f5f84bb2e]
+
+Manually mark the surface as mapped exactly once - in the committed
+handler where we have our content, and assert that it's correct when we
+want to use the surface by instantiating a view.
+
+The view handling can be made much more simple by simply using the new
+view helpers.
+
+Signed-off-by: Daniel Stone <[email protected]>
+Signed-off-by: Ming Liu <[email protected]>
+---
+ libweston/touch-calibration.c | 22 ++++++++++++----------
+ 1 file changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/libweston/touch-calibration.c b/libweston/touch-calibration.c
+index 45689ddd..f4c9366a 100644
+--- a/libweston/touch-calibration.c
++++ b/libweston/touch-calibration.c
+@@ -189,6 +189,7 @@ map_calibrator(struct weston_touch_calibrator *calibrator)
+       assert(calibrator->output);
+       assert(calibrator->surface);
+       assert(calibrator->surface->resource);
++      assert(weston_surface_is_mapped(calibrator->surface));
+ 
+       calibrator->view = weston_view_create(calibrator->surface);
+       if (!calibrator->view) {
+@@ -196,17 +197,9 @@ map_calibrator(struct weston_touch_calibrator *calibrator)
+               return;
+       }
+ 
+-      weston_layer_entry_insert(&c->calibrator_layer.view_list,
+-                                &calibrator->view->layer_link);
+-
+       weston_view_set_position(calibrator->view, calibrator->output->pos);
+-      calibrator->view->output = calibrator->surface->output;
+-      calibrator->view->is_mapped = true;
+-
+-      calibrator->surface->output = calibrator->output;
+-      weston_surface_map(calibrator->surface);
+-
+-      weston_output_schedule_repaint(calibrator->output);
++      weston_view_move_to_layer(calibrator->view,
++                                &c->calibrator_layer.view_list);
+ 
+       device->ops->get_calibration(device, &device->saved_calibration);
+       device->ops->set_calibration(device, &identity);
+@@ -260,6 +253,13 @@ touch_calibrator_surface_committed(struct wl_listener 
*listener, void *data)
+       wl_list_remove(&calibrator->surface_commit_listener.link);
+       wl_list_init(&calibrator->surface_commit_listener.link);
+ 
++      if (!weston_surface_has_content(surface)) {
++              wl_resource_post_error(calibrator->resource,
++                                     WESTON_TOUCH_CALIBRATOR_ERROR_BAD_SIZE,
++                                     "calibrator surface size has no 
content");
++              return;
++      }
++
+       if (surface->width != calibrator->output->width ||
+           surface->height != calibrator->output->height) {
+               wl_resource_post_error(calibrator->resource,
+@@ -268,6 +268,8 @@ touch_calibrator_surface_committed(struct wl_listener 
*listener, void *data)
+               return;
+       }
+ 
++      weston_surface_map(surface);
++
+       weston_compositor_set_touch_mode_calib(calibrator->compositor);
+       /* results in call to touch_calibrator_mode_changed() */
+ }
+-- 
+2.43.0
+
diff --git a/meta/recipes-graphics/wayland/weston_13.0.1.bb 
b/meta/recipes-graphics/wayland/weston_13.0.1.bb
index d8f0279b65..d2e0383287 100644
--- a/meta/recipes-graphics/wayland/weston_13.0.1.bb
+++ b/meta/recipes-graphics/wayland/weston_13.0.1.bb
@@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = 
"file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
 SRC_URI = 
"https://gitlab.freedesktop.org/wayland/weston/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz
 \
            
file://0001-libweston-tools-Include-libgen.h-for-basename-signat.patch \
            file://0001-vnc-Allow-neatvnc-in-version-0.8.0.patch \
+           file://0001-touch-calibrator-Regularise-surface-view-mapping.patch \
            file://weston.png \
            file://weston.desktop \
            file://xwayland.weston-start \
-- 
2.43.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#230574): 
https://lists.openembedded.org/g/openembedded-core/message/230574
Mute This Topic: https://lists.openembedded.org/mt/117651288/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to