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