diff options
author | Simon Ser <contact@emersion.fr> | 2019-11-05 08:11:13 +0100 |
---|---|---|
committer | Brian Ashworth <bosrsf04@gmail.com> | 2019-11-05 14:00:23 -0500 |
commit | f576bcdb8cb3ed1506ad03503815ad159c1c0479 (patch) | |
tree | c85c72a3d15aa9a232045e5ab223884a88761ace | |
parent | Fix segfault in set_mode (diff) | |
download | sway-f576bcdb8cb3ed1506ad03503815ad159c1c0479.tar.gz sway-f576bcdb8cb3ed1506ad03503815ad159c1c0479.tar.zst sway-f576bcdb8cb3ed1506ad03503815ad159c1c0479.zip |
Use wlr_output_preferred_mode instead of the last mode
Instead of relying on the order of modes, use wlr_output_preferred_mode
to get the preferred mode.
-rw-r--r-- | sway/config/output.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sway/config/output.c b/sway/config/output.c index a30d7954..25956fac 100644 --- a/sway/config/output.c +++ b/sway/config/output.c | |||
@@ -229,8 +229,8 @@ static bool set_mode(struct wlr_output *output, int width, int height, | |||
229 | } | 229 | } |
230 | if (!best) { | 230 | if (!best) { |
231 | sway_log(SWAY_ERROR, "Configured mode for %s not available", output->name); | 231 | sway_log(SWAY_ERROR, "Configured mode for %s not available", output->name); |
232 | sway_log(SWAY_INFO, "Picking default mode instead"); | 232 | sway_log(SWAY_INFO, "Picking preferred mode instead"); |
233 | best = wl_container_of(output->modes.prev, mode, link); | 233 | best = wlr_output_preferred_mode(output); |
234 | } else { | 234 | } else { |
235 | sway_log(SWAY_DEBUG, "Assigning configured mode to %s", output->name); | 235 | sway_log(SWAY_DEBUG, "Assigning configured mode to %s", output->name); |
236 | } | 236 | } |
@@ -272,8 +272,7 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) { | |||
272 | modeset_success = set_mode(wlr_output, oc->width, oc->height, | 272 | modeset_success = set_mode(wlr_output, oc->width, oc->height, |
273 | oc->refresh_rate, oc->custom_mode == 1); | 273 | oc->refresh_rate, oc->custom_mode == 1); |
274 | } else if (!wl_list_empty(&wlr_output->modes)) { | 274 | } else if (!wl_list_empty(&wlr_output->modes)) { |
275 | struct wlr_output_mode *mode = | 275 | struct wlr_output_mode *mode = wlr_output_preferred_mode(wlr_output); |
276 | wl_container_of(wlr_output->modes.prev, mode, link); | ||
277 | modeset_success = wlr_output_set_mode(wlr_output, mode); | 276 | modeset_success = wlr_output_set_mode(wlr_output, mode); |
278 | } else { | 277 | } else { |
279 | // Output doesn't support modes | 278 | // Output doesn't support modes |
@@ -332,9 +331,8 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) { | |||
332 | static void default_output_config(struct output_config *oc, | 331 | static void default_output_config(struct output_config *oc, |
333 | struct wlr_output *wlr_output) { | 332 | struct wlr_output *wlr_output) { |
334 | oc->enabled = 1; | 333 | oc->enabled = 1; |
335 | if (!wl_list_empty(&wlr_output->modes)) { | 334 | struct wlr_output_mode *mode = wlr_output_preferred_mode(wlr_output); |
336 | struct wlr_output_mode *mode = | 335 | if (mode != NULL) { |
337 | wl_container_of(wlr_output->modes.prev, mode, link); | ||
338 | oc->width = mode->width; | 336 | oc->width = mode->width; |
339 | oc->height = mode->height; | 337 | oc->height = mode->height; |
340 | oc->refresh_rate = mode->refresh / 1000.f; | 338 | oc->refresh_rate = mode->refresh / 1000.f; |