launcher: add weston_launcher_close() dummy
authorDavid Herrmann <dh.herrmann@gmail.com>
Mon, 21 Oct 2013 22:28:08 +0000 (00:28 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 21 Oct 2013 23:07:45 +0000 (16:07 -0700)
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
src/launcher-util.h
src/udev-seat.c

index 4f77d11..8b496c8 100644 (file)
@@ -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 };
index 3e7ceb5..9de5237 100644 (file)
@@ -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);
 
index ffaf08a..deceb50 100644 (file)
@@ -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;
        }
@@ -219,9 +219,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;
+                               }
                }
        }
 
@@ -278,8 +280,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);