summaryrefslogtreecommitdiff
path: root/src/udev-seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/udev-seat.c')
-rw-r--r--src/udev-seat.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/udev-seat.c b/src/udev-seat.c
index f5c2fa88..7e4330a3 100644
--- a/src/udev-seat.c
+++ b/src/udev-seat.c
@@ -35,8 +35,6 @@
static const char default_seat[] = "seat0";
static const char default_seat_name[] = "default";
-static struct udev_seat *
-udev_seat_create(struct weston_compositor *c, const char *seat_name);
static void
udev_seat_destroy(struct udev_seat *seat);
@@ -67,7 +65,7 @@ device_added(struct udev_device *udev_device, struct udev_input *input)
if (!seat_name)
seat_name = default_seat_name;
- seat = udev_seat_get_named(c, seat_name);
+ seat = udev_seat_get_named(input, seat_name);
if (seat == NULL)
return -1;
@@ -239,13 +237,13 @@ out:
}
int
-udev_input_enable(struct udev_input *input, struct udev *udev)
+udev_input_enable(struct udev_input *input)
{
struct wl_event_loop *loop;
struct weston_compositor *c = input->compositor;
int fd;
- input->udev_monitor = udev_monitor_new_from_netlink(udev, "udev");
+ input->udev_monitor = udev_monitor_new_from_netlink(input->udev, "udev");
if (!input->udev_monitor) {
weston_log("udev: failed to create the udev monitor\n");
return -1;
@@ -270,7 +268,7 @@ udev_input_enable(struct udev_input *input, struct udev *udev)
return -1;
}
- if (udev_input_add_devices(input, udev) < 0)
+ if (udev_input_add_devices(input, input->udev) < 0)
return -1;
input->enabled = 1;
@@ -318,7 +316,9 @@ udev_input_init(struct udev_input *input, struct weston_compositor *c, struct ud
memset(input, 0, sizeof *input);
input->seat_id = strdup(seat_id);
input->compositor = c;
- if (udev_input_enable(input, udev) < 0)
+ input->udev = udev;
+ input->udev = udev_ref(udev);
+ if (udev_input_enable(input) < 0)
goto err;
return 0;
@@ -335,6 +335,7 @@ udev_input_destroy(struct udev_input *input)
udev_input_disable(input);
wl_list_for_each_safe(seat, next, &input->compositor->seat_list, base.link)
udev_seat_destroy(seat);
+ udev_unref(input->udev);
free(input->seat_id);
}
@@ -365,8 +366,9 @@ notify_output_create(struct wl_listener *listener, void *data)
}
static struct udev_seat *
-udev_seat_create(struct weston_compositor *c, const char *seat_name)
+udev_seat_create(struct udev_input *input, const char *seat_name)
{
+ struct weston_compositor *c = input->compositor;
struct udev_seat *seat;
seat = zalloc(sizeof *seat);
@@ -393,8 +395,9 @@ udev_seat_destroy(struct udev_seat *seat)
}
struct udev_seat *
-udev_seat_get_named(struct weston_compositor *c, const char *seat_name)
+udev_seat_get_named(struct udev_input *input, const char *seat_name)
{
+ struct weston_compositor *c = input->compositor;
struct udev_seat *seat;
wl_list_for_each(seat, &c->seat_list, base.link) {
@@ -402,7 +405,7 @@ udev_seat_get_named(struct weston_compositor *c, const char *seat_name)
return seat;
}
- seat = udev_seat_create(c, seat_name);
+ seat = udev_seat_create(input, seat_name);
if (!seat)
return NULL;