mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-28 13:10:07 +01:00
Don't post a events for a missing capability
Log a bug instead. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
e15a7a740d
commit
c830c1ea3a
1 changed files with 56 additions and 0 deletions
|
|
@ -1065,6 +1065,35 @@ notify_removed_device(struct libinput_device *device)
|
|||
&removed_device_event->base);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
device_has_cap(struct libinput_device *device,
|
||||
enum libinput_device_capability cap)
|
||||
{
|
||||
const char *capability;
|
||||
|
||||
if (libinput_device_has_capability(device, cap))
|
||||
return true;
|
||||
|
||||
switch (cap) {
|
||||
case LIBINPUT_DEVICE_CAP_POINTER:
|
||||
capability = "CAP_POINTER";
|
||||
break;
|
||||
case LIBINPUT_DEVICE_CAP_KEYBOARD:
|
||||
capability = "CAP_KEYBOARD";
|
||||
break;
|
||||
case LIBINPUT_DEVICE_CAP_TOUCH:
|
||||
capability = "CAP_TOUCH";
|
||||
break;
|
||||
}
|
||||
|
||||
log_bug_libinput(device->seat->libinput,
|
||||
"Event for missing capability %s on device \"%s\"\n",
|
||||
capability,
|
||||
libinput_device_get_name(device));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
keyboard_notify_key(struct libinput_device *device,
|
||||
uint64_t time,
|
||||
|
|
@ -1074,6 +1103,9 @@ keyboard_notify_key(struct libinput_device *device,
|
|||
struct libinput_event_keyboard *key_event;
|
||||
uint32_t seat_key_count;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_KEYBOARD))
|
||||
return;
|
||||
|
||||
key_event = zalloc(sizeof *key_event);
|
||||
if (!key_event)
|
||||
return;
|
||||
|
|
@ -1100,6 +1132,9 @@ pointer_notify_motion(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_pointer *motion_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_POINTER))
|
||||
return;
|
||||
|
||||
motion_event = zalloc(sizeof *motion_event);
|
||||
if (!motion_event)
|
||||
return;
|
||||
|
|
@ -1122,6 +1157,9 @@ pointer_notify_motion_absolute(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_pointer *motion_absolute_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_POINTER))
|
||||
return;
|
||||
|
||||
motion_absolute_event = zalloc(sizeof *motion_absolute_event);
|
||||
if (!motion_absolute_event)
|
||||
return;
|
||||
|
|
@ -1145,6 +1183,9 @@ pointer_notify_button(struct libinput_device *device,
|
|||
struct libinput_event_pointer *button_event;
|
||||
int32_t seat_button_count;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_POINTER))
|
||||
return;
|
||||
|
||||
button_event = zalloc(sizeof *button_event);
|
||||
if (!button_event)
|
||||
return;
|
||||
|
|
@ -1175,6 +1216,9 @@ pointer_notify_axis(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_pointer *axis_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_POINTER))
|
||||
return;
|
||||
|
||||
axis_event = zalloc(sizeof *axis_event);
|
||||
if (!axis_event)
|
||||
return;
|
||||
|
|
@ -1201,6 +1245,9 @@ touch_notify_touch_down(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_touch *touch_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_TOUCH))
|
||||
return;
|
||||
|
||||
touch_event = zalloc(sizeof *touch_event);
|
||||
if (!touch_event)
|
||||
return;
|
||||
|
|
@ -1226,6 +1273,9 @@ touch_notify_touch_motion(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_touch *touch_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_TOUCH))
|
||||
return;
|
||||
|
||||
touch_event = zalloc(sizeof *touch_event);
|
||||
if (!touch_event)
|
||||
return;
|
||||
|
|
@ -1250,6 +1300,9 @@ touch_notify_touch_up(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_touch *touch_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_TOUCH))
|
||||
return;
|
||||
|
||||
touch_event = zalloc(sizeof *touch_event);
|
||||
if (!touch_event)
|
||||
return;
|
||||
|
|
@ -1271,6 +1324,9 @@ touch_notify_frame(struct libinput_device *device,
|
|||
{
|
||||
struct libinput_event_touch *touch_event;
|
||||
|
||||
if (!device_has_cap(device, LIBINPUT_DEVICE_CAP_TOUCH))
|
||||
return;
|
||||
|
||||
touch_event = zalloc(sizeof *touch_event);
|
||||
if (!touch_event)
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue