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; }