diff options
| author | Kenny Levinsen <kl@kl.wtf> | 2024-03-16 00:37:06 +0100 |
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2024-03-28 10:45:20 +0100 |
| commit | e2f3ebad8c1943800dd5f017d547d9d98bfb8bb1 (patch) | |
| tree | 906ea9e81cc2923849503f1d460e5407bc64b5a4 | |
| parent | 125c74338ac8bf8c15323a49730352b82d6d51bd (diff) | |
config/output: Split apply_output_config
Applying an output config has two stages: Atomic application of
wlr_output_state, and applicaiton of non-atomic state like output
layout.
Split the latter out into finalize_output_config for use in a later
commit.
| -rw-r--r-- | sway/config/output.c | 39 |
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. |
