From 0282196f4a3e8c6f0c6613cbd461fcc2f426dca5 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Sun, 25 Jul 2021 19:05:36 +0100 Subject: drm: re-enable drmSet/DropMaster calls The ioctls were disabled a while back since they error out and allegedly cause problem with X running in another VT. Omitting the ioctls is not cool, even as a workaround. If they fail, the user is supposed to fallback appropriately - use a suid wrapper, logind-like daemon or otherwise. As of kernel 5.10, they should just work in nearly all cases, so let's just reinstate the calls. Signed-off-by: Emil Velikov --- video/out/vo_drm.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/video/out/vo_drm.c b/video/out/vo_drm.c index a2fada99d1..c0ce1707ff 100644 --- a/video/out/vo_drm.c +++ b/video/out/vo_drm.c @@ -45,7 +45,6 @@ #define BYTES_PER_PIXEL 4 #define BITS_PER_PIXEL 32 -#define USE_MASTER 0 struct framebuffer { uint32_t width; @@ -255,25 +254,19 @@ static void release_vt(void *data) { struct vo *vo = data; crtc_release(vo); - if (USE_MASTER) { - //this function enables support for switching to x, weston etc. - //however, for whatever reason, it can be called only by root users. - //until things change, this is commented. - struct priv *p = vo->priv; - if (drmDropMaster(p->kms->fd)) { - MP_WARN(vo, "Failed to drop DRM master: %s\n", mp_strerror(errno)); - } + + const struct priv *p = vo->priv; + if (drmDropMaster(p->kms->fd)) { + MP_WARN(vo, "Failed to drop DRM master: %s\n", mp_strerror(errno)); } } static void acquire_vt(void *data) { struct vo *vo = data; - if (USE_MASTER) { - struct priv *p = vo->priv; - if (drmSetMaster(p->kms->fd)) { - MP_WARN(vo, "Failed to acquire DRM master: %s\n", mp_strerror(errno)); - } + const struct priv *p = vo->priv; + if (drmSetMaster(p->kms->fd)) { + MP_WARN(vo, "Failed to acquire DRM master: %s\n", mp_strerror(errno)); } crtc_setup(vo); -- cgit v1.2.3