launcher: add weston_launcher_close() dummy

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.
dev
David Herrmann 11 years ago committed by Kristian Høgsberg
parent 814d49f0b4
commit e461f85385
  1. 6
      src/launcher-util.c
  2. 3
      src/launcher-util.h
  3. 15
      src/udev-seat.c

@ -173,6 +173,12 @@ weston_launcher_open(struct weston_launcher *launcher,
return data->fd; return data->fd;
} }
void
weston_launcher_close(struct weston_launcher *launcher, int fd)
{
close(fd);
}
void void
weston_launcher_restore(struct weston_launcher *launcher) weston_launcher_restore(struct weston_launcher *launcher)
{ {

@ -39,6 +39,9 @@ int
weston_launcher_open(struct weston_launcher *launcher, weston_launcher_open(struct weston_launcher *launcher,
const char *path, int flags); const char *path, int flags);
void
weston_launcher_close(struct weston_launcher *launcher, int fd);
int int
weston_launcher_activate_vt(struct weston_launcher *launcher, int vt); weston_launcher_activate_vt(struct weston_launcher *launcher, int vt);

@ -83,11 +83,11 @@ device_added(struct udev_device *udev_device, struct udev_input *input)
device = evdev_device_create(&seat->base, devnode, fd); device = evdev_device_create(&seat->base, devnode, fd);
if (device == EVDEV_UNHANDLED_DEVICE) { if (device == EVDEV_UNHANDLED_DEVICE) {
close(fd); weston_launcher_close(c->launcher, fd);
weston_log("not using input device '%s'.\n", devnode); weston_log("not using input device '%s'.\n", devnode);
return 0; return 0;
} else if (device == NULL) { } else if (device == NULL) {
close(fd); weston_launcher_close(c->launcher, fd);
weston_log("failed to create input device '%s'.\n", devnode); weston_log("failed to create input device '%s'.\n", devnode);
return 0; return 0;
} }
@ -219,9 +219,11 @@ evdev_udev_handler(int fd, uint32_t mask, void *data)
if (!strcmp(device->devnode, devnode)) { if (!strcmp(device->devnode, devnode)) {
weston_log("input device %s, %s removed\n", weston_log("input device %s, %s removed\n",
device->devname, device->devnode); device->devname, device->devnode);
weston_launcher_close(input->compositor->launcher,
device->fd);
evdev_device_destroy(device); evdev_device_destroy(device);
break; break;
} }
} }
} }
@ -278,8 +280,11 @@ udev_input_remove_devices(struct udev_input *input)
struct udev_seat *seat; struct udev_seat *seat;
wl_list_for_each(seat, &input->compositor->seat_list, base.link) { 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); evdev_device_destroy(device);
}
if (seat->base.keyboard) if (seat->base.keyboard)
notify_keyboard_focus_out(&seat->base); notify_keyboard_focus_out(&seat->base);

Loading…
Cancel
Save