aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/libinput/events.c2
-rw-r--r--backend/libinput/keyboard.c6
-rw-r--r--backend/wayland/seat.c15
-rw-r--r--backend/x11/backend.c5
-rw-r--r--backend/x11/input_device.c6
5 files changed, 19 insertions, 15 deletions
diff --git a/backend/libinput/events.c b/backend/libinput/events.c
index af5bb184..af54177c 100644
--- a/backend/libinput/events.c
+++ b/backend/libinput/events.c
@@ -15,7 +15,7 @@
void destroy_libinput_input_device(struct wlr_libinput_input_device *dev) {
if (dev->keyboard.impl) {
- wlr_keyboard_destroy(&dev->keyboard);
+ wlr_keyboard_finish(&dev->keyboard);
}
if (dev->pointer.impl) {
wlr_pointer_destroy(&dev->pointer);
diff --git a/backend/libinput/keyboard.c b/backend/libinput/keyboard.c
index cf6b9836..210fd450 100644
--- a/backend/libinput/keyboard.c
+++ b/backend/libinput/keyboard.c
@@ -17,12 +17,8 @@ static void keyboard_set_leds(struct wlr_keyboard *wlr_kb, uint32_t leds) {
libinput_device_led_update(dev->handle, leds);
}
-static void keyboard_destroy(struct wlr_keyboard *wlr_kb) {
- /* wlr_keyboard belongs to the wlr_libinput_input_device */
-}
-
const struct wlr_keyboard_impl libinput_keyboard_impl = {
- .destroy = keyboard_destroy,
+ .name = "libinput-keyboard",
.led_update = keyboard_set_leds
};
diff --git a/backend/wayland/seat.c b/backend/wayland/seat.c
index 28466bb3..e2a61bd4 100644
--- a/backend/wayland/seat.c
+++ b/backend/wayland/seat.c
@@ -24,7 +24,9 @@
#include "util/time.h"
static const struct wlr_pointer_impl pointer_impl;
-static const struct wlr_keyboard_impl keyboard_impl;
+static const struct wlr_keyboard_impl keyboard_impl = {
+ .name = "wl-keyboard",
+};
static const struct wlr_touch_impl touch_impl;
static struct wlr_wl_pointer *output_get_pointer(
@@ -506,7 +508,16 @@ void destroy_wl_input_device(struct wlr_wl_input_device *dev) {
*/
wlr_input_device_finish(&dev->wlr_input_device);
if (dev->wlr_input_device._device) {
- wlr_input_device_destroy(&dev->wlr_input_device);
+ struct wlr_input_device *wlr_dev = &dev->wlr_input_device;
+ switch (wlr_dev->type) {
+ case WLR_INPUT_DEVICE_KEYBOARD:
+ wlr_keyboard_finish(wlr_dev->keyboard);
+ free(wlr_dev->keyboard);
+ break;
+ default:
+ wlr_input_device_destroy(wlr_dev);
+ break;
+ }
}
wl_list_remove(&dev->link);
free(dev);
diff --git a/backend/x11/backend.c b/backend/x11/backend.c
index 64bcf475..dbbd74e8 100644
--- a/backend/x11/backend.c
+++ b/backend/x11/backend.c
@@ -185,7 +185,7 @@ static void backend_destroy(struct wlr_backend *backend) {
wlr_output_destroy(&output->wlr_output);
}
- wlr_keyboard_destroy(&x11->keyboard);
+ wlr_keyboard_finish(&x11->keyboard);
wlr_backend_finish(backend);
@@ -637,7 +637,8 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
}
#endif
- wlr_keyboard_init(&x11->keyboard, &x11_keyboard_impl, "x11-keyboard");
+ wlr_keyboard_init(&x11->keyboard, &x11_keyboard_impl,
+ x11_keyboard_impl.name);
x11->display_destroy.notify = handle_display_destroy;
wl_display_add_destroy_listener(display, &x11->display_destroy);
diff --git a/backend/x11/input_device.c b/backend/x11/input_device.c
index f87f53a0..3bbbe594 100644
--- a/backend/x11/input_device.c
+++ b/backend/x11/input_device.c
@@ -285,12 +285,8 @@ void handle_x11_xinput_event(struct wlr_x11_backend *x11,
}
}
-static void keyboard_destroy(struct wlr_keyboard *wlr_keyboard) {
- // Don't free the keyboard, it's on the stack
-}
-
const struct wlr_keyboard_impl x11_keyboard_impl = {
- .destroy = keyboard_destroy,
+ .name = "x11-keyboard",
};
static void pointer_destroy(struct wlr_pointer *wlr_pointer) {