From: Jens Peters Date: Sun, 16 Jun 2024 07:10:46 +0000 (+0200) Subject: input: test if tablet device is a libinput device X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=1495708095b998f03aa8f07a6796764981e2dcd6;p=proto%2Flabwc.git input: test if tablet device is a libinput device Otherwise we might end with a failed assertion if the tablet or pad isn't a libinput device. Fixes https://github.com/labwc/labwc/issues/1916 --- diff --git a/src/input/tablet-pad.c b/src/input/tablet-pad.c index 1729e356..37f597ff 100644 --- a/src/input/tablet-pad.c +++ b/src/input/tablet-pad.c @@ -25,12 +25,25 @@ tablet_pad_attach_tablet(struct seat *seat) /* loop over all tablets and all pads and link by device group */ struct drawing_tablet *tablet; wl_list_for_each(tablet, &seat->tablets, link) { + if (!wlr_input_device_is_libinput(tablet->wlr_input_device)) { + /* + * Prevent iterating over non-libinput devices. This might + * be the case when a tablet is exposed by the Wayland + * protocol backend when running labwc as a nested compositor. + */ + continue; + } + struct libinput_device *tablet_device = wlr_libinput_get_device_handle(tablet->wlr_input_device); struct libinput_device_group *tablet_group = libinput_device_get_device_group(tablet_device); wl_list_for_each(pad, &seat->tablet_pads, link) { + if (!wlr_input_device_is_libinput(pad->wlr_input_device)) { + continue; + } + struct libinput_device *pad_device = wlr_libinput_get_device_handle(pad->wlr_input_device); struct libinput_device_group *pad_group =