diff --git a/minigbm_helpers.c b/minigbm_helpers.c index f91707c..b3471e5 100644 --- a/minigbm_helpers.c +++ b/minigbm_helpers.c @@ -329,6 +329,11 @@ static struct gbm_device *try_drm_devices(drmDevicePtr *devs, int dev_count, int if (fd >= 0) { struct gbm_device *gbm = gbm_create_device(fd); if (gbm) { + // DRM master might be taken by accident on a primary node even + // if master is not needed for GBM. Drop it so that programs + // that actually need DRM master (e.g. Chrome) won't be blocked. + if (type == DRM_NODE_PRIMARY && drmIsMaster(fd)) + drmDropMaster(fd); *out_fd = fd; return gbm; }