xwayland: support create multi wlr_xwayland

This commit is contained in:
JiDe Zhang 2023-09-07 11:40:45 +08:00
parent 9be72ec4ca
commit 5feed1d176
6 changed files with 102 additions and 28 deletions

View file

@ -26,11 +26,10 @@ struct wlr_xwayland_shell_v1 {
// private state
struct wl_client *client;
struct wl_list clients; // wlr_xwayland_shell_client.link
struct wl_list surfaces; // wlr_xwayland_surface_v1.link
struct wl_listener display_destroy;
struct wl_listener client_destroy;
};
/**
@ -65,9 +64,22 @@ void wlr_xwayland_shell_v1_destroy(struct wlr_xwayland_shell_v1 *shell);
/**
* Allow a client to bind to the xwayland_shell_v1 global.
*/
void wlr_xwayland_shell_v1_set_client(struct wlr_xwayland_shell_v1 *shell,
void wlr_xwayland_shell_v1_add_client(struct wlr_xwayland_shell_v1 *shell,
struct wl_client *client);
/**
* Cancel allow a client to bind to the xwayland_shell_v1 global.
*/
void wlr_xwayland_shell_v1_remove_client(struct wlr_xwayland_shell_v1 *shell,
struct wl_client *client);
/**
* Return true if allow this client bind to the xwayland_shell_v1 global,
* Return false otherwise.
*/
bool wlr_xwayland_shell_has_client(struct wlr_xwayland_shell_v1 *shell,
const struct wl_client *client);
/**
* Get a Wayland surface from an xwayland_shell_v1 serial.
*

View file

@ -19,6 +19,7 @@
struct wlr_xwm;
struct wlr_data_source;
struct wlr_drag;
struct wlr_xwayland_shell_v1;
struct wlr_xwayland {
struct wlr_xwayland_server *server;
@ -197,7 +198,8 @@ struct wlr_xwayland_minimize_event {
* client tries to connect.
*/
struct wlr_xwayland *wlr_xwayland_create(struct wl_display *wl_display,
struct wlr_compositor *compositor, bool lazy);
struct wlr_compositor *compositor, struct wlr_xwayland_shell_v1 *shell,
bool lazy);
void wlr_xwayland_destroy(struct wlr_xwayland *wlr_xwayland);