commit c4a42f2
Michael Forney
·
2014-01-18 02:50:22 +0000 UTC
parent 170445e
drm: Only create wl_drm global if not using dumb buffers
1 files changed,
+16,
-12
+16,
-12
1@@ -352,28 +352,31 @@ bool swc_drm_initialize(const char * seat_name)
2 goto error3;
3 }
4
5- drm.global = wl_global_create(swc.display, &wl_drm_interface, 2,
6- NULL, &bind_drm);
7-
8- if (!drm.global)
9- {
10- ERROR("Could not create wl_drm global\n");
11- goto error4;
12- }
13-
14 drm.event_source = wl_event_loop_add_fd
15 (swc.event_loop, swc.drm->fd, WL_EVENT_READABLE, &handle_data, NULL);
16
17 if (!drm.event_source)
18 {
19 ERROR("Could not create DRM event source\n");
20- goto error5;
21+ goto error4;
22+ }
23+
24+ if (!wld_drm_is_dumb(swc.drm->context))
25+ {
26+ drm.global = wl_global_create(swc.display, &wl_drm_interface, 2,
27+ NULL, &bind_drm);
28+
29+ if (!drm.global)
30+ {
31+ ERROR("Could not create wl_drm global\n");
32+ goto error5;
33+ }
34 }
35
36 return true;
37
38 error5:
39- wl_global_destroy(drm.global);
40+ wl_event_source_remove(drm.event_source);
41 error4:
42 wld_destroy_renderer(swc.drm->renderer);
43 error3:
44@@ -388,8 +391,9 @@ bool swc_drm_initialize(const char * seat_name)
45
46 void swc_drm_finalize()
47 {
48+ if (drm.global)
49+ wl_global_destroy(drm.global);
50 wl_event_source_remove(drm.event_source);
51- wl_global_destroy(drm.global);
52 wld_destroy_renderer(swc.drm->renderer);
53 wld_destroy_context(swc.drm->context);
54 free(drm.path);