mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2024-11-21 22:52:20 +00:00
backend/drm: use CRTC pointers instead of indices in realloc_crtcs()
Improves readability, no functional change.
This commit is contained in:
parent
4b1713d203
commit
d83c15c318
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user