aboutsummaryrefslogtreecommitdiffstats
path: root/include/sway/output.h
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2020-07-10 18:04:45 +0200
committerLibravatar Simon Ser <contact@emersion.fr>2020-07-15 19:27:12 +0200
commitd5f5885c941d9f74f131734b253133108c759e20 (patch)
tree59b5e3e01b63e7a8a8d5c794f776dc24913565b5 /include/sway/output.h
parentReload command now matches i3's implementation (diff)
downloadsway-d5f5885c941d9f74f131734b253133108c759e20.tar.gz
sway-d5f5885c941d9f74f131734b253133108c759e20.tar.zst
sway-d5f5885c941d9f74f131734b253133108c759e20.zip
config/output: don't change output state before commit
Previously, we called output_disable prior to wlr_output_commit. This mutates Sway's output state before the output commit actually succeeds. This results in Sway's state getting out-of-sync with wlroots'. An alternative fix [1] was to revert the changes made by output_disable in case of failure. This is a little complicated. Instead, this patch makes it so Sway's internal state is never changed before a successful wlr_output commit. We had two output flags: enabled and configured. However enabled was set prior to the output becoming enabled, and was used to prevent the output event handlers (specifically, the mode handler) from calling apply_output_config again (infinite loop). Rename enabled to enabling and use it exclusively for this purpose. Rename configure to enabled, because that's what it really means. [1]: https://github.com/swaywm/sway/pull/5521 Closes: https://github.com/swaywm/sway/issues/5483 (cherry picked from commit 5432f00adfdd8375fb422ad9033253d17f04efc7)
Diffstat (limited to 'include/sway/output.h')
-rw-r--r--include/sway/output.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/sway/output.h b/include/sway/output.h
index cabb4b55..f27f6344 100644
--- a/include/sway/output.h
+++ b/include/sway/output.h
@@ -36,7 +36,7 @@ struct sway_output {
36 // last applied mode when the output is DPMS'ed 36 // last applied mode when the output is DPMS'ed
37 struct wlr_output_mode *current_mode; 37 struct wlr_output_mode *current_mode;
38 38
39 bool enabled, configured; 39 bool enabling, enabled;
40 list_t *workspaces; 40 list_t *workspaces;
41 41
42 struct sway_output_state current; 42 struct sway_output_state current;
@@ -98,7 +98,7 @@ struct sway_output *all_output_by_name_or_id(const char *name_or_id);
98 98
99void output_sort_workspaces(struct sway_output *output); 99void output_sort_workspaces(struct sway_output *output);
100 100
101void output_configure(struct sway_output *output); 101void output_enable(struct sway_output *output);
102 102
103void output_disable(struct sway_output *output); 103void output_disable(struct sway_output *output);
104 104