From d83c15c318e60c7136c5abb5eac55189144d7bbd Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 27 Feb 2024 11:45:42 +0100 Subject: [PATCH] backend/drm: use CRTC pointers instead of indices in realloc_crtcs() Improves readability, no functional change. --- backend/drm/drm.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 4e2b3b84..9558b0b0 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -1271,23 +1271,19 @@ static void realloc_crtcs(struct wlr_drm_backend *drm, drm->num_crtcs, previous_match, new_match); // Converts our crtc=>connector result into a connector=>crtc one. - ssize_t connector_match[num_connectors]; + struct wlr_drm_crtc *connector_match[num_connectors]; for (size_t i = 0 ; i < num_connectors; ++i) { - connector_match[i] = -1; + connector_match[i] = NULL; } for (size_t i = 0; i < drm->num_crtcs; ++i) { if (new_match[i] != UNMATCHED) { - connector_match[new_match[i]] = i; + connector_match[new_match[i]] = &drm->crtcs[i]; } } for (size_t i = 0; i < num_connectors; ++i) { struct wlr_drm_connector *conn = connectors[i]; - - struct wlr_drm_crtc *new_crtc = NULL; - if (connector_match[i] >= 0) { - new_crtc = &drm->crtcs[connector_match[i]]; - } + struct wlr_drm_crtc *new_crtc = connector_match[i]; char old_crtc_str[16], new_crtc_str[16]; format_nullable_crtc(old_crtc_str, sizeof(old_crtc_str), conn->crtc); @@ -1313,13 +1309,13 @@ static void realloc_crtcs(struct wlr_drm_backend *drm, if (conn->status != DRM_MODE_CONNECTED || !conn->output.enabled) { continue; } - if (connector_match[i] == -1) { + if (connector_match[i] == NULL) { wlr_log(WLR_DEBUG, "Could not match a CRTC for previously connected output; " "keeping old configuration"); return; } assert(conn->crtc != NULL); - if (connector_match[i] != conn->crtc - drm->crtcs) { + if (connector_match[i] != conn->crtc) { wlr_log(WLR_DEBUG, "Cannot switch CRTC for enabled output; " "keeping old configuration"); return; @@ -1330,14 +1326,14 @@ static void realloc_crtcs(struct wlr_drm_backend *drm, for (size_t i = 0; i < num_connectors; ++i) { struct wlr_drm_connector *conn = connectors[i]; - if (conn->crtc != NULL && connector_match[i] == conn->crtc - drm->crtcs) { + if (conn->crtc != NULL && connector_match[i]) { // We don't need to change anything continue; } dealloc_crtc(conn); - if (connector_match[i] >= 0) { - conn->crtc = &drm->crtcs[connector_match[i]]; + if (connector_match[i] != NULL) { + conn->crtc = connector_match[i]; } } }