compositor: Open drm device through launcher
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 17 Sep 2013 21:03:42 +0000 (14:03 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 17 Sep 2013 21:05:47 +0000 (14:05 -0700)
src/compositor-drm.c
src/weston-launch.c

index 68406da..6c791ab 100644 (file)
@@ -1215,7 +1215,7 @@ init_drm(struct drm_compositor *ec, struct udev_device *device)
        }
 
        filename = udev_device_get_devnode(device);
-       fd = open(filename, O_RDWR | O_CLOEXEC);
+       fd = weston_launcher_open(&ec->base, filename, O_RDWR);
        if (fd < 0) {
                /* Probably permissions error */
                weston_log("couldn't open %s, skipping\n",
index 7264f7e..be77a34 100644 (file)
@@ -58,6 +58,8 @@
 
 #include "weston-launch.h"
 
+#define DRM_MAJOR 226
+
 #define MAX_ARGV_SIZE 256
 
 struct weston_launch {
@@ -313,10 +315,11 @@ handle_open(struct weston_launch *wl, struct msghdr *msg, ssize_t len)
                goto err0;
        }
 
-       if (major(s.st_rdev) != INPUT_MAJOR) {
+       if (major(s.st_rdev) != INPUT_MAJOR &&
+           major(s.st_rdev) != DRM_MAJOR) {
                close(fd);
                fd = -1;
-               fprintf(stderr, "Device %s is not an input device\n",
+               fprintf(stderr, "Device %s is not an input or drm device\n",
                        message->path);
                goto err0;
        }