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);