summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2013-10-09 11:30:57 +0200
committerKristian Høgsberg <krh@bitplanet.net>2013-10-10 16:51:37 -0700
commit0b12db5f519a347ce0e1d5262e0cb2e9e2cc6990 (patch)
treea04b5eec41f7d6693c32b4433ed663790bf8e484
parenta8e5f29ff953d8171819196e95359b552059a936 (diff)
downloadweston-0b12db5f519a347ce0e1d5262e0cb2e9e2cc6990.tar.gz
launcher: Wrap drmGetMagic and drmAuthMagic so we can build without libdrm
-rw-r--r--src/launcher-util.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/launcher-util.c b/src/launcher-util.c
index 6b6a5f3c..35a5698e 100644
--- a/src/launcher-util.c
+++ b/src/launcher-util.c
@@ -80,9 +80,19 @@ drm_set_master(int drm_fd)
return drmSetMaster(drm_fd);
return -EBADF;
}
+static int
+drm_check_master(int drm_fd)
+{
+ drm_magic_t magic;
+ if (drm_fd != -1)
+ return drmGetMagic(drm_fd, &magic) != 0 ||
+ drmAuthMagic(drm_fd, magic) != 0;
+ return 0;
+}
#else
static int drm_drop_master(int drm_fd) {return 0;}
static int drm_set_master(int drm_fd) {return 0;}
+static int drm_check_master(int drm_fd) {return 1;}
#endif
int
@@ -110,10 +120,8 @@ weston_launcher_open(struct weston_launcher *launcher,
}
if (major(s.st_rdev) == DRM_MAJOR) {
- drm_magic_t magic;
launcher->drm_fd = fd;
- if (drmGetMagic(fd, &magic) != 0 ||
- drmAuthMagic(fd, magic) != 0) {
+ if (!drm_check_master(fd)) {
weston_log("drm fd not master\n");
close(fd);
return -1;