aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2019-11-05 08:11:13 +0100
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-11-05 14:00:23 -0500
commitf576bcdb8cb3ed1506ad03503815ad159c1c0479 (patch)
treec85c72a3d15aa9a232045e5ab223884a88761ace
parentFix segfault in set_mode (diff)
downloadsway-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.c12
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) {
332static void default_output_config(struct output_config *oc, 331static 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;