From 167e74e56df055f419c960657eb66d73802a54f1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 20 Jun 2016 11:06:49 -0400 Subject: [PATCH] drm: don't pick up drm master implicitly If a client opens the drm device, they're given drm master implicitly. We already explicitly take DRM master when we need it, so that featuer is unneeded. Furthermore, it's actively harmful, since fbdev won't let you change the color palette of the terminal if drm master is held. This commit makes sure to drop master as soon as we get it from open(). --- src/plugins/renderers/drm/plugin.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c index 6677279..ebfe864 100644 --- a/src/plugins/renderers/drm/plugin.c +++ b/src/plugins/renderers/drm/plugin.c @@ -462,60 +462,62 @@ load_driver (ply_renderer_backend_t *backend) int device_fd; ply_trace ("Opening '%s'", backend->device_name); device_fd = open (backend->device_name, O_RDWR); if (device_fd < 0) { ply_trace ("open failed: %m"); return false; } backend->driver_interface = ply_renderer_generic_driver_get_interface (device_fd); backend->driver_supports_mapping_console = false; if (backend->driver_interface == NULL) { close (device_fd); return false; } backend->driver = backend->driver_interface->create_driver (device_fd); if (backend->driver == NULL) { close (device_fd); return false; } backend->device_fd = device_fd; + drmDropMaster (device_fd); + return true; } static void unload_driver (ply_renderer_backend_t *backend) { if (backend->driver == NULL) return; ply_trace ("unloading driver"); assert (backend->driver_interface != NULL); backend->driver_interface->destroy_driver (backend->driver); backend->driver = NULL; backend->driver_interface = NULL; if (backend->device_fd >= 0) { drmClose (backend->device_fd); backend->device_fd = -1; } } static bool open_device (ply_renderer_backend_t *backend) { assert (backend != NULL); assert (backend->device_name != NULL); -- 2.7.4