aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/libinput/tablet_pad.c4
-rw-r--r--types/tablet_v2/wlr_tablet_v2_pad.c6
-rw-r--r--types/wlr_tablet_pad.c3
3 files changed, 8 insertions, 5 deletions
diff --git a/backend/libinput/tablet_pad.c b/backend/libinput/tablet_pad.c
index b053b9a0..691bb185 100644
--- a/backend/libinput/tablet_pad.c
+++ b/backend/libinput/tablet_pad.c
@@ -75,6 +75,7 @@ struct wlr_tablet_pad *create_libinput_tablet_pad(
wlr_log(WLR_ERROR, "Unable to allocate wlr_tablet_pad");
return NULL;
}
+ wlr_tablet_pad_init(wlr_tablet_pad, NULL);
wlr_tablet_pad->button_count =
libinput_device_tablet_pad_get_num_buttons(libinput_dev);
@@ -83,17 +84,14 @@ struct wlr_tablet_pad *create_libinput_tablet_pad(
wlr_tablet_pad->strip_count =
libinput_device_tablet_pad_get_num_strips(libinput_dev);
- wlr_list_init(&wlr_tablet_pad->paths);
struct udev_device *udev = libinput_device_get_udev_device(libinput_dev);
wlr_list_push(&wlr_tablet_pad->paths, strdup(udev_device_get_syspath(udev)));
- wl_list_init(&wlr_tablet_pad->groups);
int groups = libinput_device_tablet_pad_get_num_mode_groups(libinput_dev);
for (int i = 0; i < groups; ++i) {
add_pad_group_from_libinput(wlr_tablet_pad, libinput_dev, i);
}
- wlr_tablet_pad_init(wlr_tablet_pad, NULL);
return wlr_tablet_pad;
}
diff --git a/types/tablet_v2/wlr_tablet_v2_pad.c b/types/tablet_v2/wlr_tablet_v2_pad.c
index d7cd5e3e..515d1fbb 100644
--- a/types/tablet_v2/wlr_tablet_v2_pad.c
+++ b/types/tablet_v2/wlr_tablet_v2_pad.c
@@ -462,8 +462,10 @@ uint32_t wlr_send_tablet_v2_tablet_pad_enter(
uint32_t time = now.tv_nsec / 1000;
for (size_t i = 0; i < pad->group_count; ++i) {
- zwp_tablet_pad_group_v2_send_mode_switch(
- pad_client->groups[i], time, serial, pad->groups[i]);
+ if (pad_client->groups[i]) {
+ zwp_tablet_pad_group_v2_send_mode_switch(
+ pad_client->groups[i], time, serial, pad->groups[i]);
+ }
}
return serial;
diff --git a/types/wlr_tablet_pad.c b/types/wlr_tablet_pad.c
index 71421e72..aa0111fe 100644
--- a/types/wlr_tablet_pad.c
+++ b/types/wlr_tablet_pad.c
@@ -11,6 +11,9 @@ void wlr_tablet_pad_init(struct wlr_tablet_pad *pad,
wl_signal_init(&pad->events.ring);
wl_signal_init(&pad->events.strip);
wl_signal_init(&pad->events.attach_tablet);
+
+ wl_list_init(&pad->groups);
+ wlr_list_init(&pad->paths);
}
void wlr_tablet_pad_destroy(struct wlr_tablet_pad *pad) {