mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-04 20:55:58 +01:00
xwayland: listen to wlr_seat destroy signal
This commit is contained in:
parent
58488ec5ce
commit
e0eafa0429
2 changed files with 21 additions and 0 deletions
|
@ -28,6 +28,7 @@ struct wlr_xwayland {
|
|||
struct wl_event_source *sigusr1_source;
|
||||
struct wl_listener client_destroy;
|
||||
struct wl_listener display_destroy;
|
||||
struct wl_listener seat_destroy;
|
||||
struct wlr_xwm *xwm;
|
||||
struct wlr_xwayland_cursor *cursor;
|
||||
|
||||
|
|
|
@ -134,6 +134,7 @@ static void wlr_xwayland_finish(struct wlr_xwayland *wlr_xwayland) {
|
|||
free(wlr_xwayland->cursor);
|
||||
}
|
||||
|
||||
wlr_xwayland_set_seat(wlr_xwayland, NULL);
|
||||
xwm_destroy(wlr_xwayland->xwm);
|
||||
|
||||
if (wlr_xwayland->client) {
|
||||
|
@ -388,11 +389,30 @@ void wlr_xwayland_set_cursor(struct wlr_xwayland *wlr_xwayland,
|
|||
wlr_xwayland->cursor->hotspot_y = hotspot_y;
|
||||
}
|
||||
|
||||
static void wlr_xwayland_handle_seat_destroy(struct wl_listener *listener,
|
||||
void *data) {
|
||||
struct wlr_xwayland *xwayland =
|
||||
wl_container_of(listener, xwayland, seat_destroy);
|
||||
|
||||
wlr_xwayland_set_seat(xwayland, NULL);
|
||||
}
|
||||
|
||||
void wlr_xwayland_set_seat(struct wlr_xwayland *xwayland,
|
||||
struct wlr_seat *seat) {
|
||||
if (xwayland->seat) {
|
||||
wl_list_remove(&xwayland->seat_destroy.link);
|
||||
}
|
||||
|
||||
xwayland->seat = seat;
|
||||
|
||||
if (xwayland->xwm) {
|
||||
xwm_set_seat(xwayland->xwm, seat);
|
||||
}
|
||||
|
||||
if (seat == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
xwayland->seat_destroy.notify = wlr_xwayland_handle_seat_destroy;
|
||||
wl_signal_add(&seat->events.destroy, &xwayland->seat_destroy);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue