diff options
| author | Simon Ser <contact@emersion.fr> | 2022-10-18 14:32:30 +0200 | 
|---|---|---|
| committer | Simon Zeni <simon@bl4ckb0ne.ca> | 2022-11-18 15:35:20 +0000 | 
| commit | 85b37127a6e33a3d73a3dd6c5c0d02c3755c91f6 (patch) | |
| tree | 116481442b0882abeb340a0b311ab11646af332c | |
| parent | d19191ff6bbcb9c91b1d0f2d7233c46c37d153e7 (diff) | |
| download | wlroots-85b37127a6e33a3d73a3dd6c5c0d02c3755c91f6.tar.xz | |
xwayland/shell: add wlr_xwayland_shell_v1_surface_from_serial()
| -rw-r--r-- | include/wlr/xwayland/shell.h | 8 | ||||
| -rw-r--r-- | xwayland/shell.c | 11 | 
2 files changed, 19 insertions, 0 deletions
| diff --git a/include/wlr/xwayland/shell.h b/include/wlr/xwayland/shell.h index 91b7c716..75a410e2 100644 --- a/include/wlr/xwayland/shell.h +++ b/include/wlr/xwayland/shell.h @@ -70,4 +70,12 @@ void wlr_xwayland_shell_v1_destroy(struct wlr_xwayland_shell_v1 *shell);  void wlr_xwayland_shell_v1_set_client(struct wlr_xwayland_shell_v1 *shell,  	struct wl_client *client); +/** + * Get a Wayland surface from an xwayland_shell_v1 serial. + * + * Returns NULL if the serial hasn't been associated with any surface. + */ +struct wlr_surface *wlr_xwayland_shell_v1_surface_from_serial( +	struct wlr_xwayland_shell_v1 *shell, uint64_t serial); +  #endif diff --git a/xwayland/shell.c b/xwayland/shell.c index a6ec315b..e48d6283 100644 --- a/xwayland/shell.c +++ b/xwayland/shell.c @@ -224,3 +224,14 @@ void wlr_xwayland_shell_v1_set_client(struct wlr_xwayland_shell_v1 *shell,  		wl_list_init(&shell->client_destroy.link);  	}  } + +struct wlr_surface *wlr_xwayland_shell_v1_surface_from_serial( +		struct wlr_xwayland_shell_v1 *shell, uint64_t serial) { +	struct wlr_xwayland_surface_v1 *xwl_surface; +	wl_list_for_each(xwl_surface, &shell->surfaces, link) { +		if (xwl_surface->serial == serial) { +			return xwl_surface->surface; +		} +	} +	return NULL; +} | 
