struct wl_event_source *vt_source;
};
+#ifdef BUILD_DRM_COMPOSITOR
+static int
+drm_drop_master(int drm_fd)
+{
+ if (drm_fd != -1)
+ return drmDropMaster(drm_fd);
+ return -EBADF;
+}
+static int
+drm_set_master(int drm_fd)
+{
+ if (drm_fd != -1)
+ return drmSetMaster(drm_fd);
+ return -EBADF;
+}
+#else
+static int drm_drop_master(int drm_fd) {return 0;}
+static int drm_set_master(int drm_fd) {return 0;}
+#endif
+
int
weston_launcher_open(struct weston_launcher *launcher,
const char *path, int flags)
if (launcher->fd == -1) {
fd = open(path, flags | O_CLOEXEC);
-
if (fd == -1)
return -1;
return -1;
}
- if (major(s.st_rdev) == DRM_MAJOR)
+ if (major(s.st_rdev) == DRM_MAJOR) {
launcher->drm_fd = fd;
+ if (drm_set_master(fd) == -1) {
+ weston_log("could not set master on drm fd\n");
+ close(fd);
+ return -1;
+ }
+ }
return fd;
}
return 1;
}
-#ifdef BUILD_DRM_COMPOSITOR
-static int
-drm_drop_master(int drm_fd)
-{
- if (drm_fd != -1)
- return drmDropMaster(drm_fd);
- return -EBADF;
-}
-static int
-drm_set_master(int drm_fd)
-{
- if (drm_fd != -1)
- return drmSetMaster(drm_fd);
- return -EBADF;
-}
-#else
-static int drm_drop_master(int drm_fd) {return 0;}
-static int drm_set_master(int drm_fd) {return 0;}
-#endif
-
static int
vt_handler(int signal_number, void *data)
{