aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/config/output.c39
1 files changed, 25 insertions, 14 deletions
diff --git a/sway/config/output.c b/sway/config/output.c
index 1b2332e9..fd1d6e3c 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -503,25 +503,12 @@ static void queue_output_config(struct output_config *oc,
}
}
-bool apply_output_config(struct output_config *oc, struct sway_output *output) {
+static bool finalize_output_config(struct output_config *oc, struct sway_output *output) {
if (output == root->fallback_output) {
return false;
}
struct wlr_output *wlr_output = output->wlr_output;
-
- struct wlr_output_state pending = {0};
- queue_output_config(oc, output, &pending);
-
- sway_log(SWAY_DEBUG, "Committing output %s", wlr_output->name);
- if (!wlr_output_commit_state(wlr_output, &pending)) {
- // Failed to commit output changes, maybe the output is missing a CRTC.
- // Leave the output disabled for now and try again when the output gets
- // the mode we asked for.
- sway_log(SWAY_ERROR, "Failed to commit output %s", wlr_output->name);
- return false;
- }
-
if (oc && !oc->enabled) {
sway_log(SWAY_DEBUG, "Disabling output %s", oc->name);
if (output->enabled) {
@@ -577,6 +564,30 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) {
output->max_render_time = oc->max_render_time;
}
+ return true;
+}
+
+bool apply_output_config(struct output_config *oc, struct sway_output *output) {
+ if (output == root->fallback_output) {
+ return false;
+ }
+
+ struct wlr_output_state pending = {0};
+ queue_output_config(oc, output, &pending);
+
+ sway_log(SWAY_DEBUG, "Committing output %s", output->wlr_output->name);
+ if (!wlr_output_commit_state(output->wlr_output, &pending)) {
+ // Failed to commit output changes, maybe the output is missing a CRTC.
+ // Leave the output disabled for now and try again when the output gets
+ // the mode we asked for.
+ sway_log(SWAY_ERROR, "Failed to commit output %s", output->wlr_output->name);
+ return false;
+ }
+
+ if (!finalize_output_config(oc, output)) {
+ return false;
+ }
+
// Reconfigure all devices, since input config may have been applied before
// this output came online, and some config items (like map_to_output) are
// dependent on an output being present.