aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-07-30 23:02:30 +0200
committerSimon Zeni <simon@bl4ckb0ne.ca>2021-08-02 09:28:21 -0400
commit923258b0bedef4ef9cfc02b5c30b8cb8c51ec0f8 (patch)
tree4d0efc8f44528e47a145126ca99229b4083ee444
parentf12bacf4b41e183f9efb352e20db60c7cc3898db (diff)
backend/drm: preserve mode order from kernel
The kernel orders the mode list from highest to lowest. Preserve this ordering in the wlr_output.modes list.
-rw-r--r--backend/drm/drm.c2
-rw-r--r--types/wlr_output.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index e7628e2d..cd161e02 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -1385,7 +1385,7 @@ void scan_drm_connectors(struct wlr_drm_backend *drm) {
mode->wlr_mode.refresh,
mode->wlr_mode.preferred ? "(preferred)" : "");
- wl_list_insert(&wlr_conn->output.modes, &mode->wlr_mode.link);
+ wl_list_insert(wlr_conn->output.modes.prev, &mode->wlr_mode.link);
}
wlr_conn->possible_crtcs = get_possible_crtcs(drm->fd, res, drm_conn);
diff --git a/types/wlr_output.c b/types/wlr_output.c
index 6d399616..47ee55be 100644
--- a/types/wlr_output.c
+++ b/types/wlr_output.c
@@ -457,8 +457,8 @@ struct wlr_output_mode *wlr_output_preferred_mode(struct wlr_output *output) {
}
}
- // No preferred mode, choose the last one
- return wl_container_of(output->modes.prev, mode, link);
+ // No preferred mode, choose the first one
+ return wl_container_of(output->modes.next, mode, link);
}
static void output_state_clear_buffer(struct wlr_output_state *state) {