diff --git a/include/sway/config.h b/include/sway/config.h index 17b7a5735..700f748ca 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -696,7 +696,7 @@ struct output_config *new_output_config(const char *name); bool apply_output_configs(struct matched_output_config *configs, size_t configs_len, bool test_only, bool degrade_to_off); -void apply_all_output_configs(void); +bool apply_all_output_configs(bool test_only, bool degrade_to_off); void sort_output_configs_by_priority(struct matched_output_config *configs, size_t configs_len); diff --git a/sway/commands/output.c b/sway/commands/output.c index 9478e0bad..44ee9150c 100644 --- a/sway/commands/output.c +++ b/sway/commands/output.c @@ -111,7 +111,7 @@ struct cmd_results *cmd_output(int argc, char **argv) { // entire config and before the deferred commands so that an auto generated // workspace name is not given to re-enabled outputs. if (!config->reloading && !config->validating) { - apply_all_output_configs(); + apply_all_output_configs(false, true); if (background) { if (!spawn_swaybg()) { return cmd_results_new(CMD_FAILURE, diff --git a/sway/config.c b/sway/config.c index 5058efcc0..97f01aa20 100644 --- a/sway/config.c +++ b/sway/config.c @@ -533,7 +533,7 @@ bool load_main_config(const char *file, bool is_active, bool validating) { } sway_switch_retrigger_bindings_for_all(); - apply_all_output_configs(); + apply_all_output_configs(false, true); spawn_swaybg(); config->reloading = false; diff --git a/sway/config/output.c b/sway/config/output.c index 61148ab85..d11d60e96 100644 --- a/sway/config/output.c +++ b/sway/config/output.c @@ -997,11 +997,11 @@ out: return ok; } -void apply_all_output_configs(void) { +bool apply_all_output_configs(bool test_only, bool degrade_to_off) { size_t configs_len = wl_list_length(&root->all_outputs); struct matched_output_config *configs = calloc(configs_len, sizeof(*configs)); if (!configs) { - return; + return false; } int config_idx = 0; @@ -1018,12 +1018,13 @@ void apply_all_output_configs(void) { } sort_output_configs_by_priority(configs, configs_len); - apply_output_configs(configs, configs_len, false, true); + bool ok = apply_output_configs(configs, configs_len, test_only, degrade_to_off); for (size_t idx = 0; idx < configs_len; idx++) { struct matched_output_config *cfg = &configs[idx]; free_output_config(cfg->config); } free(configs); + return ok; } void free_output_config(struct output_config *oc) { diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 9f4290cd6..0b54cb4dd 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -386,7 +386,7 @@ static int timer_modeset_handle(void *data) { wl_event_source_remove(server->delayed_modeset); server->delayed_modeset = NULL; - apply_all_output_configs(); + apply_all_output_configs(false, true); return 0; }