From ce53a473aa5ba1f31afa8a45bbb57e4cf833bc8f Mon Sep 17 00:00:00 2001 From: Dima Krasner Date: Wed, 22 Dec 2021 08:25:43 +0200 Subject: [PATCH] fall back to a lower output mode if needed (swaywm/sway@4cdc4ac) --- output.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/output.c b/output.c index 13eb5eb..0577c0d 100644 --- a/output.c +++ b/output.c @@ -201,10 +201,26 @@ handle_new_output(struct wl_listener *listener, void *data) output->frame.notify = handle_output_frame; wl_signal_add(&wlr_output->events.frame, &output->frame); - struct wlr_output_mode *preferred_mode = wlr_output_preferred_mode(wlr_output); - if (preferred_mode) { - wlr_output_set_mode(wlr_output, preferred_mode); + if (!wl_list_empty(&wlr_output->modes)) { + struct wlr_output_mode *preferred_mode = wlr_output_preferred_mode(wlr_output); + if (preferred_mode) { + wlr_output_set_mode(wlr_output, preferred_mode); + } + if (!wlr_output_test(wlr_output)) { + struct wlr_output_mode *mode; + wl_list_for_each (mode, &wlr_output->modes, link) { + if (mode == preferred_mode) { + continue; + } + + wlr_output_set_mode(wlr_output, mode); + if (wlr_output_test(wlr_output)) { + break; + } + } + } } + wlr_output_set_transform(wlr_output, output->server->output_transform); if (server->output_mode == CAGE_MULTI_OUTPUT_MODE_LAST) {