commit 2814349
Michael Forney
·
2013-09-14 03:37:08 +0000 UTC
parent 06a2686
evdev_device: Don't use libudev
3 files changed,
+12,
-21
+7,
-17
1@@ -154,19 +154,10 @@ static int handle_data(int fd, uint32_t mask, void * data)
2 }
3
4 bool swc_evdev_device_initialize(struct swc_evdev_device * device,
5- struct udev_device * udev_device)
6+ const char * path)
7 {
8- const char * path, * model, * vendor;
9 uint32_t index;
10
11- path = udev_device_get_devnode(udev_device);
12- model = udev_device_get_property_value(udev_device, "ID_MODEL")
13- ?: "unknown";
14- vendor = udev_device_get_property_value(udev_device, "ID_VENDOR")
15- ?: "unknown";
16-
17- device->model = strdup(model);
18- device->vendor = strdup(vendor);
19 device->fd = open(path, O_RDWR | O_NONBLOCK | O_CLOEXEC);
20 memset(&device->motion, 0, sizeof device->motion);
21
22@@ -184,19 +175,20 @@ bool swc_evdev_device_initialize(struct swc_evdev_device * device,
23 goto error_fd;
24 }
25
26- printf("adding device %s %s\n", device->vendor, device->model);
27+ printf("Adding device %s\n", libevdev_get_name(device->dev));
28
29 device->capabilities = 0;
30 /* XXX: touch devices */
31
32- if (udev_device_get_property_value(udev_device, "ID_INPUT_KEYBOARD"))
33+ if (libevdev_has_event_code(device->dev, EV_KEY, KEY_ENTER))
34 {
35 device->capabilities |= WL_SEAT_CAPABILITY_KEYBOARD;
36 printf("\tthis device is a keyboard\n");
37 }
38
39- if (udev_device_get_property_value(udev_device, "ID_INPUT_MOUSE")
40- || udev_device_get_property_value(udev_device, "ID_INPUT_TOUCHPAD"))
41+ if (libevdev_has_event_code(device->dev, EV_REL, REL_X)
42+ && libevdev_has_event_code(device->dev, EV_REL, REL_Y)
43+ && libevdev_has_event_code(device->dev, EV_KEY, BTN_MOUSE))
44 {
45 device->capabilities |= WL_SEAT_CAPABILITY_POINTER;
46 printf("\tthis device is a pointer\n");
47@@ -214,15 +206,13 @@ void swc_evdev_device_finish(struct swc_evdev_device * device)
48 {
49 wl_event_source_remove(device->source);
50 libevdev_free(device->dev);
51- free(device->model);
52- free(device->vendor);
53 close(device->fd);
54 }
55
56 void swc_evdev_device_add_event_sources(struct swc_evdev_device * device,
57 struct wl_event_loop * event_loop)
58 {
59- printf("adding event source for %s %s\n", device->vendor, device->model);
60+ printf("Adding event source for %s\n", libevdev_get_name(device->dev));
61 device->source
62 = wl_event_loop_add_fd(event_loop, device->fd, WL_EVENT_READABLE,
63 handle_data, device);
+1,
-3
1@@ -2,7 +2,6 @@
2 #define SWC_EVDEV_DEVICE_H 1
3
4 #include <stdbool.h>
5-#include <libudev.h>
6 #include <linux/input.h>
7 #include <wayland-server.h>
8
9@@ -51,7 +50,6 @@ struct swc_evdev_device
10 {
11 int fd;
12 struct libevdev * dev;
13- char * model, * vendor;
14
15 struct
16 {
17@@ -81,7 +79,7 @@ struct swc_evdev_device
18 };
19
20 bool swc_evdev_device_initialize(struct swc_evdev_device * device,
21- struct udev_device * udev_device);
22+ const char * path);
23
24 void swc_evdev_device_finish(struct swc_evdev_device * device);
25
+4,
-1
1@@ -179,6 +179,7 @@ static void add_device(struct swc_seat * seat, struct udev_device * udev_device)
2 {
3 const char * device_seat;
4 const char * device_path;
5+ struct swc_evdev_device * device;
6 struct evdev_device_entry * entry;
7
8 device_seat = udev_device_get_property_value(udev_device, "ID_SEAT");
9@@ -190,6 +191,8 @@ static void add_device(struct swc_seat * seat, struct udev_device * udev_device)
10 if (strcmp(device_seat, seat->name) != 0)
11 return;
12
13+ device_path = udev_device_get_devnode(udev_device);
14+
15 entry = malloc(sizeof *entry);
16
17 if (!entry)
18@@ -201,7 +204,7 @@ static void add_device(struct swc_seat * seat, struct udev_device * udev_device)
19 entry->seat = seat;
20 entry->event_listener.notify = &handle_evdev_event;
21
22- if (!swc_evdev_device_initialize(&entry->device, udev_device))
23+ if (!swc_evdev_device_initialize(&entry->device, device_path))
24 {
25 free(entry);
26 return;