commit 51f7496
Michael Forney
·
2013-11-25 09:45:14 +0000 UTC
parent e8a836c
Move udev initialization to swc.c
8 files changed,
+36,
-43
+3,
-15
1@@ -11,7 +11,6 @@
2
3 #include <stdlib.h>
4 #include <stdio.h>
5-#include <libudev.h>
6
7 static const char default_seat[] = "seat0";
8
9@@ -330,19 +329,11 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
10 = &swc_compositor_class_implementation;
11 compositor->cursor_class.interface = &swc_cursor_class_implementation;
12
13- compositor->udev = udev_new();
14-
15- if (compositor->udev == NULL)
16- {
17- printf("could not initialize udev context\n");
18- goto error_base;
19- }
20-
21 /* TODO: configurable seat */
22- if (!swc_seat_initialize(&compositor->seat, compositor->udev, default_seat))
23+ if (!swc_seat_initialize(&compositor->seat, default_seat))
24 {
25 printf("could not initialize seat\n");
26- goto error_udev;
27+ goto error_base;
28 }
29
30 swc_seat_add_event_sources(&compositor->seat, event_loop);
31@@ -351,7 +342,7 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
32 &compositor->pointer_listener);
33
34 /* TODO: configurable seat */
35- if (!swc_drm_initialize(&compositor->drm, compositor->udev, default_seat))
36+ if (!swc_drm_initialize(&compositor->drm, default_seat))
37 {
38 printf("could not initialize drm\n");
39 goto error_seat;
40@@ -419,8 +410,6 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
41 swc_drm_finish(&compositor->drm);
42 error_seat:
43 swc_seat_finish(&compositor->seat);
44- error_udev:
45- udev_unref(compositor->udev);
46 error_base:
47 return false;
48 }
49@@ -439,7 +428,6 @@ void swc_compositor_finish(struct swc_compositor * compositor)
50
51 swc_drm_finish(&compositor->drm);
52 swc_seat_finish(&compositor->seat);
53- udev_unref(compositor->udev);
54 }
55
56 void swc_compositor_add_globals(struct swc_compositor * compositor,
+0,
-2
1@@ -11,8 +11,6 @@ struct swc_compositor
2 {
3 struct wl_display * display;
4
5- struct udev * udev;
6-
7 struct swc_seat seat;
8 struct swc_drm drm;
9 struct swc_renderer renderer;
+6,
-7
1@@ -25,6 +25,7 @@
2 #include "drm_buffer.h"
3 #include "output.h"
4 #include "event.h"
5+#include "private.h"
6
7 #include <stdio.h>
8 #include <stdlib.h>
9@@ -132,8 +133,7 @@ static const struct wl_drm_interface drm_implementation = {
10 .create_prime_buffer = &create_prime_buffer
11 };
12
13-static struct udev_device * find_primary_drm_device(struct udev * udev,
14- const char * seat)
15+static struct udev_device * find_primary_drm_device(const char * seat)
16 {
17 struct udev_enumerate * enumerate;
18 struct udev_list_entry * entry;
19@@ -143,7 +143,7 @@ static struct udev_device * find_primary_drm_device(struct udev * udev,
20 struct udev_device * pci;
21 struct udev_device * device, * drm_device = NULL;
22
23- enumerate = udev_enumerate_new(udev);
24+ enumerate = udev_enumerate_new(swc.udev);
25 udev_enumerate_add_match_subsystem(enumerate, "drm");
26 udev_enumerate_add_match_sysname(enumerate, "card[0-9]*");
27
28@@ -152,7 +152,7 @@ static struct udev_device * find_primary_drm_device(struct udev * udev,
29 udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(enumerate))
30 {
31 path = udev_list_entry_get_name(entry);
32- device = udev_device_new_from_syspath(udev, path);
33+ device = udev_device_new_from_syspath(swc.udev, path);
34
35 printf("device node path: %s\n", udev_device_get_devnode(device));
36
37@@ -278,15 +278,14 @@ static int handle_data(int fd, uint32_t mask, void * data)
38 return 1;
39 }
40
41-bool swc_drm_initialize(struct swc_drm * drm, struct udev * udev,
42- const char * seat)
43+bool swc_drm_initialize(struct swc_drm * drm, const char * seat)
44 {
45 const char * sysnum;
46 char * end;
47
48 wl_signal_init(&drm->event_signal);
49
50- struct udev_device * drm_device = find_primary_drm_device(udev, seat);
51+ struct udev_device * drm_device = find_primary_drm_device(seat);
52
53 if (!drm_device)
54 {
+1,
-4
1@@ -3,7 +3,6 @@
2
3 #include <stdbool.h>
4 #include <stdint.h>
5-#include <libudev.h>
6 #include <wayland-server.h>
7
8 struct wld_drm_context * context;
9@@ -34,9 +33,7 @@ struct swc_drm
10 struct wl_signal event_signal;
11 };
12
13-bool swc_drm_initialize(struct swc_drm * drm, struct udev * udev,
14- const char * seat);
15-
16+bool swc_drm_initialize(struct swc_drm * drm, const char * seat);
17 void swc_drm_finish(struct swc_drm * drm);
18
19 void swc_drm_add_event_sources(struct swc_drm * drm,
+2,
-0
1@@ -35,6 +35,8 @@ struct swc
2 struct wl_event_loop * event_loop;
3 const struct swc_manager * manager;
4
5+ struct udev * udev;
6+
7 struct swc_compositor * compositor;
8 };
9
+6,
-6
1@@ -2,6 +2,7 @@
2 #include "evdev_device.h"
3 #include "util.h"
4 #include "event.h"
5+#include "private.h"
6
7 #include <stdlib.h>
8 #include <stdio.h>
9@@ -180,8 +181,7 @@ static void add_device(struct swc_seat * seat, struct udev_device * udev_device)
10 wl_list_insert(&seat->devices, &device->link);
11 }
12
13-bool swc_seat_initialize(struct swc_seat * seat, struct udev * udev,
14- const char * seat_name)
15+bool swc_seat_initialize(struct swc_seat * seat, const char * seat_name)
16 {
17 seat->name = strdup(seat_name);
18 seat->capabilities = 0;
19@@ -221,7 +221,7 @@ bool swc_seat_initialize(struct swc_seat * seat, struct udev * udev,
20 wl_list_init(&seat->resources);
21 wl_signal_init(&seat->destroy_signal);
22 wl_list_init(&seat->devices);
23- swc_seat_add_devices(seat, udev);
24+ swc_seat_add_devices(seat);
25
26 return true;
27
28@@ -268,14 +268,14 @@ void swc_seat_add_event_sources(struct swc_seat * seat,
29 }
30 }
31
32-void swc_seat_add_devices(struct swc_seat * seat, struct udev * udev)
33+void swc_seat_add_devices(struct swc_seat * seat)
34 {
35 struct udev_enumerate * enumerate;
36 struct udev_list_entry * entry;
37 const char * path;
38 struct udev_device * device;
39
40- enumerate = udev_enumerate_new(udev);
41+ enumerate = udev_enumerate_new(swc.udev);
42 udev_enumerate_add_match_subsystem(enumerate, "input");
43 udev_enumerate_add_match_sysname(enumerate, "event[0-9]*");
44
45@@ -284,7 +284,7 @@ void swc_seat_add_devices(struct swc_seat * seat, struct udev * udev)
46 udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(enumerate))
47 {
48 path = udev_list_entry_get_name(entry);
49- device = udev_device_new_from_syspath(udev, path);
50+ device = udev_device_new_from_syspath(swc.udev, path);
51 add_device(seat, device);
52 udev_device_unref(device);
53 }
+2,
-4
1@@ -11,7 +11,6 @@
2 #include <stdbool.h>
3 #include <wayland-util.h>
4
5-struct udev;
6 struct wl_display;
7 struct wl_event_loop;
8
9@@ -35,8 +34,7 @@ struct swc_seat
10 struct swc_evdev_device_handler evdev_handler;
11 };
12
13-bool swc_seat_initialize(struct swc_seat * seat, struct udev * udev,
14- const char * seat_name);
15+bool swc_seat_initialize(struct swc_seat * seat, const char * seat_name);
16
17 void swc_seat_finish(struct swc_seat * seat);
18
19@@ -45,7 +43,7 @@ void swc_seat_add_globals(struct swc_seat * seat, struct wl_display * display);
20 void swc_seat_add_event_sources(struct swc_seat * seat,
21 struct wl_event_loop * event_loop);
22
23-void swc_seat_add_devices(struct swc_seat * seat, struct udev * udev);
24+void swc_seat_add_devices(struct swc_seat * seat);
25
26 #endif
27
+16,
-5
1@@ -28,6 +28,8 @@
2 #include "shell.h"
3 #include "window.h"
4
5+#include <libudev.h>
6+
7 static struct swc_compositor compositor;
8
9 struct swc swc = {
10@@ -50,16 +52,22 @@ bool swc_initialize(struct wl_display * display,
11 swc.event_loop = event_loop ?: wl_display_get_event_loop(display);
12 swc.manager = manager;
13
14+ if (!(swc.udev = udev_new()))
15+ {
16+ fprintf(stderr, "Could not initialize udev\n");
17+ goto error0;
18+ }
19+
20 if (!swc_bindings_initialize())
21 {
22 fprintf(stderr, "Could not initialize bindings\n");
23- goto error0;
24+ goto error1;
25 }
26
27 if (!swc_compositor_initialize(&compositor, display, swc.event_loop))
28 {
29 fprintf(stderr, "Could not initialize compositor\n");
30- goto error1;
31+ goto error2;
32 }
33
34 swc_compositor_add_globals(&compositor, display);
35@@ -67,17 +75,19 @@ bool swc_initialize(struct wl_display * display,
36 if (!swc_shell_initialize())
37 {
38 fprintf(stderr, "Could not initialize shell\n");
39- goto error2;
40+ goto error3;
41 }
42
43 setup_compositor();
44
45 return true;
46
47- error2:
48+ error3:
49 swc_compositor_finish(&compositor);
50- error1:
51+ error2:
52 swc_bindings_finalize();
53+ error1:
54+ udev_unref(swc.udev);
55 error0:
56 return false;
57 }
58@@ -88,5 +98,6 @@ void swc_finalize()
59 swc_shell_finalize();
60 swc_compositor_finish(&compositor);
61 swc_bindings_finalize();
62+ udev_unref(swc.udev);
63 }
64