commit f25627d
Michael Forney
·
2013-09-13 00:48:20 +0000 UTC
parent d44b1fe
seat: Always initialize keyboard and pointer
1 files changed,
+23,
-24
+23,
-24
1@@ -315,28 +315,12 @@ static void add_device(struct swc_seat * seat, struct udev_device * udev_device)
2
3 wl_signal_add(&entry->device.event_signal, &entry->event_listener);
4
5- if (!(seat->capabilities & WL_SEAT_CAPABILITY_POINTER)
6- && entry->device.capabilities & WL_SEAT_CAPABILITY_POINTER)
7+ if (~seat->capabilities & entry->device.capabilities)
8 {
9- printf("initializing pointer\n");
10- swc_pointer_initialize(&seat->pointer);
11- seat->capabilities |= WL_SEAT_CAPABILITY_POINTER;
12+ seat->capabilities |= entry->device.capabilities;
13 update_capabilities(seat);
14 }
15
16- if (!(seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD)
17- && entry->device.capabilities & WL_SEAT_CAPABILITY_KEYBOARD)
18- {
19- printf("initializing keyboard\n");
20- swc_keyboard_initialize(&seat->keyboard);
21- wl_signal_add(&seat->keyboard.focus.event_signal,
22- &seat->keyboard_focus_listener);
23- seat->capabilities |= WL_SEAT_CAPABILITY_KEYBOARD;
24- update_capabilities(seat);
25- }
26-
27- seat->capabilities |= entry->device.capabilities;
28-
29 wl_list_insert(&seat->devices, &entry->link);
30 }
31
32@@ -360,6 +344,21 @@ bool swc_seat_initialize(struct swc_seat * seat, struct udev * udev,
33 goto error_xkb;
34 }
35
36+ if (!swc_keyboard_initialize(&seat->keyboard))
37+ {
38+ printf("could not initialize keyboard\n");
39+ goto error_data_device;
40+ }
41+
42+ wl_signal_add(&seat->keyboard.focus.event_signal,
43+ &seat->keyboard_focus_listener);
44+
45+ if (!swc_pointer_initialize(&seat->pointer))
46+ {
47+ printf("could not initialize pointer\n");
48+ goto error_keyboard;
49+ }
50+
51 wl_signal_add(&seat->data_device.event_signal, &seat->data_device_listener);
52
53 wl_list_init(&seat->resources);
54@@ -370,6 +369,10 @@ bool swc_seat_initialize(struct swc_seat * seat, struct udev * udev,
55
56 return true;
57
58+ error_keyboard:
59+ swc_keyboard_finish(&seat->keyboard);
60+ error_data_device:
61+ swc_data_device_finish(&seat->data_device);
62 error_xkb:
63 swc_xkb_finish(&seat->xkb);
64 error_name:
65@@ -384,12 +387,8 @@ void swc_seat_finish(struct swc_seat * seat)
66
67 wl_signal_emit(&seat->destroy_signal, seat);
68
69- if (seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD)
70- swc_keyboard_finish(&seat->keyboard);
71-
72- if (seat->capabilities & WL_SEAT_CAPABILITY_POINTER)
73- swc_pointer_finish(&seat->pointer);
74-
75+ swc_pointer_finish(&seat->pointer);
76+ swc_keyboard_finish(&seat->keyboard);
77 swc_xkb_finish(&seat->xkb);
78
79 free(seat->name);