diff --git a/src/path-seat.c b/src/path-seat.c index 560c0b45..9d08a66a 100644 --- a/src/path-seat.c +++ b/src/path-seat.c @@ -302,24 +302,22 @@ libinput_path_create_context(const struct libinput_interface *interface, void *user_data) { struct path_input *input; - struct udev *udev; if (!interface) return NULL; - udev = udev_new(); + _unref_(udev) *udev = udev_new(); if (!udev) return NULL; input = zalloc(sizeof *input); if (libinput_init(&input->base, interface, &interface_backend, user_data) != 0) { - udev_unref(udev); free(input); return NULL; } - input->udev = udev; + input->udev = udev_ref(udev); list_init(&input->path_list); return &input->base; @@ -361,7 +359,6 @@ libinput_path_add_device(struct libinput *libinput, { struct path_input *input = (struct path_input *)libinput; struct udev *udev = input->udev; - struct udev_device *udev_device; struct libinput_device *device; if (strlen(path) > PATH_MAX) { @@ -376,14 +373,13 @@ libinput_path_add_device(struct libinput *libinput, return NULL; } - udev_device = udev_device_from_devnode(libinput, udev, path); + _unref_(udev_device) *udev_device = udev_device_from_devnode(libinput, udev, path); if (!udev_device) { log_bug_client(libinput, "Invalid path %s\n", path); return NULL; } if (ignore_litest_test_suite_device(udev_device)) { - udev_device_unref(udev_device); return NULL; } @@ -395,7 +391,6 @@ libinput_path_add_device(struct libinput *libinput, libinput_init_quirks(libinput); device = path_create_device(libinput, udev_device, NULL); - udev_device_unref(udev_device); return device; } diff --git a/src/udev-seat.c b/src/udev-seat.c index 09b08963..81557c63 100644 --- a/src/udev-seat.c +++ b/src/udev-seat.c @@ -54,16 +54,14 @@ filter_duplicates(struct udev_seat *udev_seat, list_for_each(device, &udev_seat->base.devices_list, link) { const char *syspath; - struct udev_device *ud; - ud = libinput_device_get_udev_device(device); + _unref_(udev_device) *ud = libinput_device_get_udev_device(device); if (!ud) continue; syspath = udev_device_get_syspath(ud); if (syspath && new_syspath && streq(syspath, new_syspath)) ignore_device = true; - udev_device_unref(ud); if (ignore_device) break; @@ -168,23 +166,19 @@ device_removed(struct udev_device *udev_device, struct udev_input *input) static int udev_input_add_devices(struct udev_input *input, struct udev *udev) { - struct udev_enumerate *e; struct udev_list_entry *entry; - struct udev_device *device; - const char *path, *sysname; - e = udev_enumerate_new(udev); + _unref_(udev_enumerate) *e = udev_enumerate_new(udev); udev_enumerate_add_match_subsystem(e, "input"); udev_enumerate_scan_devices(e); udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(e)) { - path = udev_list_entry_get_name(entry); - device = udev_device_new_from_syspath(udev, path); + const char *path = udev_list_entry_get_name(entry); + _unref_(udev_device) *device = udev_device_new_from_syspath(udev, path); if (!device) continue; - sysname = udev_device_get_sysname(device); + const char *sysname = udev_device_get_sysname(device); if (!strstartswith(sysname, "event")) { - udev_device_unref(device); continue; } @@ -195,20 +189,13 @@ udev_input_add_devices(struct udev_input *input, struct udev *udev) "%-7s - skip unconfigured input device '%s'\n", sysname, udev_device_get_devnode(device)); - udev_device_unref(device); continue; } if (device_added(device, input, NULL) < 0) { - udev_device_unref(device); - udev_enumerate_unref(e); return -1; } - - udev_device_unref(device); } - udev_enumerate_unref(e); - return 0; } @@ -216,27 +203,21 @@ static void evdev_udev_handler(void *data) { struct udev_input *input = data; - struct udev_device *udev_device; const char *action; - udev_device = udev_monitor_receive_device(input->udev_monitor); + _unref_(udev_device) *udev_device = udev_monitor_receive_device(input->udev_monitor); if (!udev_device) return; action = udev_device_get_action(udev_device); - if (!action) - goto out; - - if (!strstartswith(udev_device_get_sysname(udev_device), "event")) - goto out; + if (!action || + !strstartswith(udev_device_get_sysname(udev_device), "event")) + return; if (streq(action, "add")) device_added(udev_device, input, NULL); else if (streq(action, "remove")) device_removed(udev_device, input); - -out: - udev_device_unref(udev_device); } static void