backend/wayland: make destroy_wl_seats() handle a single seat
Instead of destroying all seats, destroy a single one. We only need to destroy all seats at one call-site (backend_destroy), but we'll need to destroy a single seat elsewhere in the next commit.
This commit is contained in:
parent
8df62e4016
commit
2b5eb0733e
|
@ -469,7 +469,11 @@ static void backend_destroy(struct wlr_backend *backend) {
|
||||||
wlr_drm_format_set_finish(&wl->shm_formats);
|
wlr_drm_format_set_finish(&wl->shm_formats);
|
||||||
wlr_drm_format_set_finish(&wl->linux_dmabuf_v1_formats);
|
wlr_drm_format_set_finish(&wl->linux_dmabuf_v1_formats);
|
||||||
|
|
||||||
destroy_wl_seats(wl);
|
struct wlr_wl_seat *seat, *tmp_seat;
|
||||||
|
wl_list_for_each_safe(seat, tmp_seat, &wl->seats, link) {
|
||||||
|
destroy_wl_seat(seat);
|
||||||
|
}
|
||||||
|
|
||||||
if (wl->zxdg_decoration_manager_v1) {
|
if (wl->zxdg_decoration_manager_v1) {
|
||||||
zxdg_decoration_manager_v1_destroy(wl->zxdg_decoration_manager_v1);
|
zxdg_decoration_manager_v1_destroy(wl->zxdg_decoration_manager_v1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,34 +246,31 @@ bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void destroy_wl_seats(struct wlr_wl_backend *wl) {
|
void destroy_wl_seat(struct wlr_wl_seat *seat) {
|
||||||
struct wlr_wl_seat *seat, *tmp_seat;
|
if (seat->wl_touch) {
|
||||||
wl_list_for_each_safe(seat, tmp_seat, &wl->seats, link) {
|
wl_touch_release(seat->wl_touch);
|
||||||
if (seat->wl_touch) {
|
wlr_touch_finish(&seat->wlr_touch);
|
||||||
wl_touch_release(seat->wl_touch);
|
|
||||||
wlr_touch_finish(&seat->wlr_touch);
|
|
||||||
}
|
|
||||||
if (seat->wl_pointer) {
|
|
||||||
finish_seat_pointer(seat);
|
|
||||||
}
|
|
||||||
if (seat->wl_keyboard) {
|
|
||||||
wl_keyboard_release(seat->wl_keyboard);
|
|
||||||
|
|
||||||
if (seat->backend->started) {
|
|
||||||
wlr_keyboard_finish(&seat->wlr_keyboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (seat->zwp_tablet_seat_v2) {
|
|
||||||
finish_seat_tablet(seat);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(seat->name);
|
|
||||||
assert(seat->wl_seat);
|
|
||||||
wl_seat_destroy(seat->wl_seat);
|
|
||||||
|
|
||||||
wl_list_remove(&seat->link);
|
|
||||||
free(seat);
|
|
||||||
}
|
}
|
||||||
|
if (seat->wl_pointer) {
|
||||||
|
finish_seat_pointer(seat);
|
||||||
|
}
|
||||||
|
if (seat->wl_keyboard) {
|
||||||
|
wl_keyboard_release(seat->wl_keyboard);
|
||||||
|
|
||||||
|
if (seat->backend->started) {
|
||||||
|
wlr_keyboard_finish(&seat->wlr_keyboard);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (seat->zwp_tablet_seat_v2) {
|
||||||
|
finish_seat_tablet(seat);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(seat->name);
|
||||||
|
assert(seat->wl_seat);
|
||||||
|
wl_seat_destroy(seat->wl_seat);
|
||||||
|
|
||||||
|
wl_list_remove(&seat->link);
|
||||||
|
free(seat);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_input_device_is_wl(struct wlr_input_device *dev) {
|
bool wlr_input_device_is_wl(struct wlr_input_device *dev) {
|
||||||
|
|
|
@ -149,7 +149,7 @@ void init_seat_tablet(struct wlr_wl_seat *seat);
|
||||||
void finish_seat_tablet(struct wlr_wl_seat *seat);
|
void finish_seat_tablet(struct wlr_wl_seat *seat);
|
||||||
|
|
||||||
bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl);
|
bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl);
|
||||||
void destroy_wl_seats(struct wlr_wl_backend *wl);
|
void destroy_wl_seat(struct wlr_wl_seat *seat);
|
||||||
void destroy_wl_buffer(struct wlr_wl_buffer *buffer);
|
void destroy_wl_buffer(struct wlr_wl_buffer *buffer);
|
||||||
|
|
||||||
extern const struct wlr_pointer_impl wl_pointer_impl;
|
extern const struct wlr_pointer_impl wl_pointer_impl;
|
||||||
|
|
Loading…
Reference in New Issue