From 0daece43068b1d22d1ad21b2ed3dc383f73fc2e1 Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Thu, 17 Aug 2023 14:59:24 +0300 Subject: desktop: Fix Xwayland build Turns out weston doesn't install xwayland-api header if Xwayland is not installed, which is a shame, and should be rectified. Meanwhile, let's guard access to the header and the API that the header exports. Bug-AGL: SPEC-4782 Signed-off-by: Marius Vlad Change-Id: I77638b263483628f8cc7a3dcbd08c8947db1d86b (cherry picked from commit a68408367cf5e254d981e1d43ba261b9aade6166) --- src/desktop.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/desktop.c b/src/desktop.c index 9f472c0..3fd09bc 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -30,7 +30,9 @@ #include "shared/helpers.h" #include #include +#ifdef BUILD_XWAYLAND #include +#endif #include "agl-shell-desktop-server-protocol.h" @@ -556,6 +558,7 @@ ivi_shell_destroy(struct wl_listener *listener, void *data) static void transform_handler(struct wl_listener *listener, void *data) { +#ifdef BUILD_XWAYLAND struct weston_surface *surface = data; struct ivi_surface *ivisurf = get_ivi_shell_surface(surface); const struct weston_xwayland_surface_api *api; @@ -580,6 +583,27 @@ transform_handler(struct wl_listener *listener, void *data) y = ivisurf->view->geometry.y; api->send_position(surface, x, y); +#endif +} + +bool +is_shell_surface_xwayland(struct ivi_surface *surf) +{ +#ifdef BUILD_XWAYLAND + const struct weston_xwayland_surface_api *api; + struct ivi_compositor *ivi = surf->ivi; + struct weston_surface *surface; + + api = ivi->xwayland_surface_api; + + if (!api) + return false; + + surface = weston_desktop_surface_get_surface(surf->dsurface); + return api->is_xwayland_surface(surface); +#else + return false; +#endif } int -- cgit 1.2.3-korg