From fbf5982e3838ee28b5345e98832f6956c402b225 Mon Sep 17 00:00:00 2001 From: Kirill Primak Date: Mon, 5 Dec 2022 21:13:19 +0300 Subject: [PATCH] xwayland/xwm: introduce wlr_xwayland_surface_try_from_wlr_surface() This new function replaces wlr_surface_is_xwayland_surface() and wlr_xwayland_surface_from_wlr_surface(). --- include/wlr/xwayland/xwayland.h | 13 +++---------- xwayland/xwm.c | 10 ++++------ 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/wlr/xwayland/xwayland.h b/include/wlr/xwayland/xwayland.h index a8580c0e..63e64f36 100644 --- a/include/wlr/xwayland/xwayland.h +++ b/include/wlr/xwayland/xwayland.h @@ -231,20 +231,13 @@ void wlr_xwayland_surface_set_fullscreen(struct wlr_xwayland_surface *surface, void wlr_xwayland_set_seat(struct wlr_xwayland *xwayland, struct wlr_seat *seat); -/** - * Check whether a surface is an Xwayland surface. - * - * As an edge case, if the surface has been created by Xwayland but has no X11 - * window associated, false is returned. - */ -bool wlr_surface_is_xwayland_surface(struct wlr_surface *surface); - /** * Get a struct wlr_xwayland_surface from a struct wlr_surface. * - * This function asserts that the surface is an Xwayland surface. + * If the surface hasn't been created by Xwayland or has no X11 window + * associated, NULL is returned. */ -struct wlr_xwayland_surface *wlr_xwayland_surface_from_wlr_surface( +struct wlr_xwayland_surface *wlr_xwayland_surface_try_from_wlr_surface( struct wlr_surface *surface); void wlr_xwayland_surface_ping(struct wlr_xwayland_surface *surface); diff --git a/xwayland/xwm.c b/xwayland/xwm.c index 64052ef6..dab2cf85 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -101,14 +101,12 @@ struct pending_startup_id { static const struct wlr_addon_interface surface_addon_impl; -bool wlr_surface_is_xwayland_surface(struct wlr_surface *surface) { - return wlr_addon_find(&surface->addons, NULL, &surface_addon_impl) != NULL; -} - -struct wlr_xwayland_surface *wlr_xwayland_surface_from_wlr_surface( +struct wlr_xwayland_surface *wlr_xwayland_surface_try_from_wlr_surface( struct wlr_surface *surface) { struct wlr_addon *addon = wlr_addon_find(&surface->addons, NULL, &surface_addon_impl); - assert(addon != NULL); + if (addon == NULL) { + return NULL; + } struct wlr_xwayland_surface *xsurface = wl_container_of(addon, xsurface, surface_addon); return xsurface; }