[PATCH v2 3/4] launcher: add weston_launcher_close() dummy
David Herrmann
dh.herrmann at gmail.com
Tue Oct 22 00:28:08 CEST 2013
If you request a device via weston_launcher_open(), you should now release
it via weston_launcher_close() instead of close(). This is currently not
needed but will be required for logind devices.
---
src/launcher-util.c | 6 ++++++
src/launcher-util.h | 3 +++
src/udev-seat.c | 15 ++++++++++-----
3 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/launcher-util.c b/src/launcher-util.c
index 4f77d11..8b496c8 100644
--- a/src/launcher-util.c
+++ b/src/launcher-util.c
@@ -174,6 +174,12 @@ weston_launcher_open(struct weston_launcher *launcher,
}
void
+weston_launcher_close(struct weston_launcher *launcher, int fd)
+{
+ close(fd);
+}
+
+void
weston_launcher_restore(struct weston_launcher *launcher)
{
struct vt_mode mode = { 0 };
diff --git a/src/launcher-util.h b/src/launcher-util.h
index 3e7ceb5..9de5237 100644
--- a/src/launcher-util.h
+++ b/src/launcher-util.h
@@ -39,6 +39,9 @@ int
weston_launcher_open(struct weston_launcher *launcher,
const char *path, int flags);
+void
+weston_launcher_close(struct weston_launcher *launcher, int fd);
+
int
weston_launcher_activate_vt(struct weston_launcher *launcher, int vt);
diff --git a/src/udev-seat.c b/src/udev-seat.c
index 4ef7ff3..11a34fb 100644
--- a/src/udev-seat.c
+++ b/src/udev-seat.c
@@ -83,11 +83,11 @@ device_added(struct udev_device *udev_device, struct udev_input *input)
device = evdev_device_create(&seat->base, devnode, fd);
if (device == EVDEV_UNHANDLED_DEVICE) {
- close(fd);
+ weston_launcher_close(c->launcher, fd);
weston_log("not using input device '%s'.\n", devnode);
return 0;
} else if (device == NULL) {
- close(fd);
+ weston_launcher_close(c->launcher, fd);
weston_log("failed to create input device '%s'.\n", devnode);
return 0;
}
@@ -216,9 +216,11 @@ evdev_udev_handler(int fd, uint32_t mask, void *data)
if (!strcmp(device->devnode, devnode)) {
weston_log("input device %s, %s removed\n",
device->devname, device->devnode);
+ weston_launcher_close(input->compositor->launcher,
+ device->fd);
evdev_device_destroy(device);
- break;
- }
+ break;
+ }
}
}
@@ -273,8 +275,11 @@ udev_input_remove_devices(struct udev_input *input)
struct udev_seat *seat;
wl_list_for_each(seat, &input->compositor->seat_list, base.link) {
- wl_list_for_each_safe(device, next, &seat->devices_list, link)
+ wl_list_for_each_safe(device, next, &seat->devices_list, link) {
+ weston_launcher_close(input->compositor->launcher,
+ device->fd);
evdev_device_destroy(device);
+ }
if (seat->base.keyboard)
notify_keyboard_focus_out(&seat->base);
--
1.8.4.1
More information about the wayland-devel
mailing list