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