diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2023-08-17 14:59:24 +0300 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2023-11-08 18:07:40 +0200 |
commit | 0daece43068b1d22d1ad21b2ed3dc383f73fc2e1 (patch) | |
tree | a86cbe567ffd488677dd537d3d5d1b815e5f58b2 | |
parent | 8c9f4f054a43bb9625872622c46b5ae2a59a1c98 (diff) |
desktop: Fix Xwayland buildpike
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 <marius.vlad@collabora.com>
Change-Id: I77638b263483628f8cc7a3dcbd08c8947db1d86b
(cherry picked from commit a68408367cf5e254d981e1d43ba261b9aade6166)
-rw-r--r-- | src/desktop.c | 24 |
1 files changed, 24 insertions, 0 deletions
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 <libweston/libweston.h> #include <libweston-desktop/libweston-desktop.h> +#ifdef BUILD_XWAYLAND #include <libweston/xwayland-api.h> +#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 |