From 5b3ea51f7bcb74d55e7f37356bc0ca823aa2e602 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 22 Jun 2021 16:39:56 +0200 Subject: [PATCH] drm: disable all CRTCs on startup If the CRTC we've selected is being used on another connector, our modeset fails. --- src/drm.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/drm.cpp b/src/drm.cpp index b63f5b1..52dea66 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -463,6 +463,14 @@ int init_drm(struct drm_t *drm, const char *device, const char *mode_str, unsign } } + // Disable all CRTCs. This ensures the CRTC we've selected isn't being used + // by another connector. + for (i = 0; i < resources->count_crtcs; i++) { + ret = drmModeSetCrtc(drm->fd, resources->crtcs[i], 0, 0, 0, nullptr, 0, nullptr); + if (ret != 0) + fprintf(stderr, "failed to disable CRTC %" PRIu32 ": %s", resources->crtcs[i], strerror(-ret)); + } + drmModeFreeResources(resources); drm->connector_id = connector->connector_id;