aboutsummaryrefslogtreecommitdiffstats
path: root/swaylock/seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'swaylock/seat.c')
-rw-r--r--swaylock/seat.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/swaylock/seat.c b/swaylock/seat.c
index c2630d87..22dd9360 100644
--- a/swaylock/seat.c
+++ b/swaylock/seat.c
@@ -145,13 +145,21 @@ static const struct wl_pointer_listener pointer_listener = {
145static void seat_handle_capabilities(void *data, struct wl_seat *wl_seat, 145static void seat_handle_capabilities(void *data, struct wl_seat *wl_seat,
146 enum wl_seat_capability caps) { 146 enum wl_seat_capability caps) {
147 struct swaylock_state *state = data; 147 struct swaylock_state *state = data;
148 if (state->pointer) {
149 wl_pointer_release(state->pointer);
150 state->pointer = NULL;
151 }
152 if (state->keyboard) {
153 wl_keyboard_release(state->keyboard);
154 state->keyboard = NULL;
155 }
148 if ((caps & WL_SEAT_CAPABILITY_POINTER)) { 156 if ((caps & WL_SEAT_CAPABILITY_POINTER)) {
149 struct wl_pointer *pointer = wl_seat_get_pointer(wl_seat); 157 state->pointer = wl_seat_get_pointer(wl_seat);
150 wl_pointer_add_listener(pointer, &pointer_listener, NULL); 158 wl_pointer_add_listener(state->pointer, &pointer_listener, NULL);
151 } 159 }
152 if ((caps & WL_SEAT_CAPABILITY_KEYBOARD)) { 160 if ((caps & WL_SEAT_CAPABILITY_KEYBOARD)) {
153 struct wl_keyboard *keyboard = wl_seat_get_keyboard(wl_seat); 161 state->keyboard = wl_seat_get_keyboard(wl_seat);
154 wl_keyboard_add_listener(keyboard, &keyboard_listener, state); 162 wl_keyboard_add_listener(state->keyboard, &keyboard_listener, state);
155 } 163 }
156} 164}
157 165