From 58a40ce07b2e20e6fca70fba4c2775510928d33e Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Sat, 26 Oct 2019 13:59:19 +0200 Subject: [PATCH] Fix apply_output_config return value when enabling output apply_output_config would call output_enable and always return true, even if the output couldn't be enabled. --- include/sway/output.h | 2 +- sway/config/output.c | 3 +-- sway/tree/output.c | 10 ++++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/sway/output.h b/include/sway/output.h index b94824b45..c52b30944 100644 --- a/include/sway/output.h +++ b/include/sway/output.h @@ -90,7 +90,7 @@ struct sway_output *all_output_by_name_or_id(const char *name_or_id); void output_sort_workspaces(struct sway_output *output); -void output_enable(struct sway_output *output, struct output_config *oc); +bool output_enable(struct sway_output *output, struct output_config *oc); void output_disable(struct sway_output *output); diff --git a/sway/config/output.c b/sway/config/output.c index 12a875b71..3c36692f3 100644 --- a/sway/config/output.c +++ b/sway/config/output.c @@ -249,8 +249,7 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) { if (!oc || oc->dpms_state != DPMS_OFF) { wlr_output_enable(wlr_output, true); } - output_enable(output, oc); - return true; + return output_enable(output, oc); } if (oc && oc->dpms_state == DPMS_ON) { diff --git a/sway/tree/output.c b/sway/tree/output.c index 24adc08d6..33fdee5ea 100644 --- a/sway/tree/output.c +++ b/sway/tree/output.c @@ -60,7 +60,7 @@ static void restore_workspaces(struct sway_output *output) { struct sway_workspace *ws = root->noop_output->workspaces->items[0]; workspace_detach(ws); output_add_workspace(output, ws); - + // If the floater was made floating while on the NOOP output, its width // and height will be zero and it should be reinitialized as a floating // container to get the appropriate size and location. Additionally, if @@ -104,9 +104,9 @@ struct sway_output *output_create(struct wlr_output *wlr_output) { return output; } -void output_enable(struct sway_output *output, struct output_config *oc) { +bool output_enable(struct sway_output *output, struct output_config *oc) { if (!sway_assert(!output->enabled, "output is already enabled")) { - return; + return false; } struct wlr_output *wlr_output = output->wlr_output; size_t len = sizeof(output->layers) / sizeof(output->layers[0]); @@ -117,7 +117,7 @@ void output_enable(struct sway_output *output, struct output_config *oc) { output->enabled = true; if (!apply_output_config(oc, output)) { output->enabled = false; - return; + return false; } output->configured = true; @@ -155,6 +155,8 @@ void output_enable(struct sway_output *output, struct output_config *oc) { arrange_layers(output); arrange_root(); + + return true; } static void evacuate_sticky(struct sway_workspace *old_ws,