ei: improve debug messages for keymap failures

Let's be more informative about what failed.

Fixes #48
This commit is contained in:
Peter Hutterer 2023-11-09 12:52:17 +10:00
parent 924341e174
commit 38132d6fc5

View file

@ -958,7 +958,7 @@ ei_device_keyboard_get_keymap(struct ei_device *device)
}
static struct ei_keymap *
ei_keymap_new(enum ei_keymap_type type, int fd, size_t size)
ei_keymap_new(struct ei *ei, enum ei_keymap_type type, int fd, size_t size)
{
_unref_(ei_keymap) *keymap = ei_keymap_create(NULL);
@ -966,15 +966,20 @@ ei_keymap_new(enum ei_keymap_type type, int fd, size_t size)
case EI_KEYMAP_TYPE_XKB:
break;
default:
log_bug(ei, "Unsupported keymap type: %u", type);
return NULL;
}
if (fd < 0 || size == 0)
if (fd < 0 || size == 0) {
log_bug(ei, "Invalid keymap fd %d with size %zu", fd, size);
return NULL;
}
int newfd = xdup(fd);
if (newfd < 0)
if (newfd < 0) {
log_bug(ei, "Failed to dup keymap fd: %s", strerror(errno));
return NULL;
}
keymap->fd = newfd;
keymap->type = type;
@ -993,12 +998,10 @@ ei_device_set_keymap(struct ei_device *device,
if (!type)
return;
_unref_(ei_keymap) *keymap = ei_keymap_new(type, keymap_fd, size);
if (!keymap) {
log_bug(ei_device_get_context(device),
"Failed to apply server-requested keymap");
struct ei *ei = ei_device_get_context(device);
_unref_(ei_keymap) *keymap = ei_keymap_new(ei, type, keymap_fd, size);
if (!keymap)
return; /* FIXME: ei_device_remove() here */
}
keymap->device = device;
device->keymap = ei_keymap_ref(keymap);