mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-01-05 07:50:14 +01:00
libeis: better logging of client bugs
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
7318512a89
commit
d99d1e8707
4 changed files with 63 additions and 18 deletions
|
|
@ -113,6 +113,8 @@ eis_client_connect(struct eis_client *client)
|
|||
case EIS_CLIENT_STATE_CONNECTING:
|
||||
break;
|
||||
default:
|
||||
log_bug_client(eis_client_get_context(client),
|
||||
"%s: client already connected\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -78,18 +78,33 @@ eis_keymap_new(enum eis_keymap_type type, int fd, size_t size)
|
|||
return eis_keymap_ref(keymap);
|
||||
}
|
||||
|
||||
static inline struct eis *
|
||||
eis_device_get_context(struct eis_device *device)
|
||||
{
|
||||
return eis_client_get_context(eis_device_get_client(device));
|
||||
}
|
||||
|
||||
_public_ void
|
||||
eis_device_keyboard_set_keymap(struct eis_device *device,
|
||||
struct eis_keymap *keymap)
|
||||
{
|
||||
if (device->state != EIS_DEVICE_STATE_NEW)
|
||||
if (device->state != EIS_DEVICE_STATE_NEW) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device already (dis)connected\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (device->keymap && !device->keymap->is_client_keymap)
|
||||
if (device->keymap && !device->keymap->is_client_keymap) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: keymap can only be configured once\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (keymap && keymap->assigned)
|
||||
if (keymap && keymap->assigned) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: keymaps cannot be re-used\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
device->keymap = eis_keymap_unref(device->keymap);
|
||||
if (keymap) {
|
||||
|
|
@ -129,8 +144,11 @@ OBJECT_IMPLEMENT_GETTER(eis_device, name, const char *);
|
|||
_public_ void
|
||||
eis_device_set_name(struct eis_device *device, const char *name)
|
||||
{
|
||||
if (device->state != EIS_DEVICE_STATE_NEW)
|
||||
if (device->state != EIS_DEVICE_STATE_NEW) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device already (dis)connected\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
free(device->name);
|
||||
device->name = xstrdup(name);
|
||||
|
|
@ -180,13 +198,19 @@ eis_device_set_client_keymap(struct eis_device *device,
|
|||
enum eis_keymap_type type,
|
||||
int keymap_fd, size_t size)
|
||||
{
|
||||
if (device->state != EIS_DEVICE_STATE_NEW)
|
||||
if (device->state != EIS_DEVICE_STATE_NEW) {
|
||||
log_bug(eis_device_get_context(device),
|
||||
"%s: device already (dis)connected\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
_cleanup_eis_keymap_ struct eis_keymap *keymap =
|
||||
eis_keymap_new(type, keymap_fd, size);
|
||||
if (!keymap)
|
||||
if (!keymap) {
|
||||
log_bug(eis_device_get_context(device),
|
||||
"%s: keymap creation failed, using NULL keymap\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
eis_device_keyboard_set_keymap(device, keymap);
|
||||
keymap->is_client_keymap = true;
|
||||
|
|
@ -249,8 +273,11 @@ int
|
|||
eis_device_pointer_rel(struct eis_device *device,
|
||||
double x, double y)
|
||||
{
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_POINTER))
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_POINTER)) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device is not a pointer\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (device->state != EIS_DEVICE_STATE_RESUMED)
|
||||
return -EINVAL;
|
||||
|
|
@ -264,8 +291,11 @@ int
|
|||
eis_device_pointer_abs(struct eis_device *device,
|
||||
double x, double y)
|
||||
{
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_POINTER_ABSOLUTE))
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_POINTER_ABSOLUTE)) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device is not an absolute pointer\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (device->state != EIS_DEVICE_STATE_RESUMED)
|
||||
return -EINVAL;
|
||||
|
|
@ -283,8 +313,11 @@ int
|
|||
eis_device_pointer_button(struct eis_device *device,
|
||||
uint32_t button, bool is_press)
|
||||
{
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_POINTER))
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_POINTER)) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device is not a pointer\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (device->state != EIS_DEVICE_STATE_RESUMED)
|
||||
return -EINVAL;
|
||||
|
|
@ -298,8 +331,11 @@ int
|
|||
eis_device_keyboard_key(struct eis_device *device,
|
||||
uint32_t key, bool is_press)
|
||||
{
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_KEYBOARD))
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_KEYBOARD)) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device is not a keyboard\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (device->state != EIS_DEVICE_STATE_RESUMED)
|
||||
return -EINVAL;
|
||||
|
|
@ -314,8 +350,11 @@ eis_device_touch(struct eis_device *device, uint32_t touchid,
|
|||
bool is_down, bool is_up,
|
||||
double x, double y)
|
||||
{
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_TOUCH))
|
||||
if (!eis_device_has_capability(device, EIS_DEVICE_CAP_TOUCH)) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device is not a touch device\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (device->state != EIS_DEVICE_STATE_RESUMED)
|
||||
return -EINVAL;
|
||||
|
|
@ -333,12 +372,14 @@ eis_device_touch(struct eis_device *device, uint32_t touchid,
|
|||
_public_ void
|
||||
eis_device_connect(struct eis_device *device)
|
||||
{
|
||||
if (device->state != EIS_DEVICE_STATE_NEW)
|
||||
if (device->state != EIS_DEVICE_STATE_NEW) {
|
||||
log_bug_client(eis_device_get_context(device),
|
||||
"%s: device is already (dis)connected\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (device->capabilities_mask == 0) {
|
||||
struct eis_client *client = eis_device_get_client(device);
|
||||
log_bug(eis_client_get_context(client),
|
||||
log_bug(eis_device_get_context(device),
|
||||
"Connecting a device without capabilities\n");
|
||||
eis_device_disconnect(device);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -127,9 +127,9 @@ check_event_type(struct eis_event *event,
|
|||
va_end(args);
|
||||
|
||||
if (!rc)
|
||||
log_bug(eis_event_get_context(event),
|
||||
"Invalid event type %d passed to %s()\n",
|
||||
type, function_name);
|
||||
log_bug_client(eis_event_get_context(event),
|
||||
"Invalid event type %d passed to %s()\n",
|
||||
type, function_name);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -277,4 +277,6 @@ eis_log_msg_va(struct eis *eis,
|
|||
#define log_error(T_, ...) \
|
||||
eis_log_msg((T_), EIS_LOG_PRIORITY_ERROR, __VA_ARGS__)
|
||||
#define log_bug(T_, ...) \
|
||||
eis_log_msg((T_), EIS_LOG_PRIORITY_ERROR, "🪳 BUG: " __VA_ARGS__)
|
||||
eis_log_msg((T_), EIS_LOG_PRIORITY_ERROR, "🪳 libeis bug: " __VA_ARGS__)
|
||||
#define log_bug_client(T_, ...) \
|
||||
eis_log_msg((T_), EIS_LOG_PRIORITY_ERROR, "🪲 Bug: " __VA_ARGS__)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue