aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/wayland/backend.c6
-rw-r--r--backend/wayland/seat.c45
-rw-r--r--include/backend/wayland.h2
3 files changed, 27 insertions, 26 deletions
diff --git a/backend/wayland/backend.c b/backend/wayland/backend.c
index 720cecc5..f3aa462a 100644
--- a/backend/wayland/backend.c
+++ b/backend/wayland/backend.c
@@ -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->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) {
zxdg_decoration_manager_v1_destroy(wl->zxdg_decoration_manager_v1);
}
diff --git a/backend/wayland/seat.c b/backend/wayland/seat.c
index b81fe219..35fc4dc2 100644
--- a/backend/wayland/seat.c
+++ b/backend/wayland/seat.c
@@ -246,34 +246,31 @@ bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl) {
return true;
}
-void destroy_wl_seats(struct wlr_wl_backend *wl) {
- struct wlr_wl_seat *seat, *tmp_seat;
- wl_list_for_each_safe(seat, tmp_seat, &wl->seats, link) {
- if (seat->wl_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);
+void destroy_wl_seat(struct wlr_wl_seat *seat) {
+ if (seat->wl_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);
+ 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);
+ free(seat->name);
+ assert(seat->wl_seat);
+ wl_seat_destroy(seat->wl_seat);
- wl_list_remove(&seat->link);
- free(seat);
- }
+ wl_list_remove(&seat->link);
+ free(seat);
}
bool wlr_input_device_is_wl(struct wlr_input_device *dev) {
diff --git a/include/backend/wayland.h b/include/backend/wayland.h
index c23c0f9a..6dd457a5 100644
--- a/include/backend/wayland.h
+++ b/include/backend/wayland.h
@@ -149,7 +149,7 @@ void init_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);
-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);
extern const struct wlr_pointer_impl wl_pointer_impl;