commit 923f642b704022442cc3245a2fa13278341c14e0
parent 3e03eb3a017d144137dbe6591891f3a51a61dea0
Author: Kenny Levinsen <kl@kl.wtf>
Date: Sat, 16 Mar 2024 00:57:11 +0100
output/config: Add apply_all_output_configs
Apply all output configs as they are. This differs from
apply_output_config_to_outputs, which tries to apply a specific output
config.
Diffstat:
2 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/include/sway/config.h b/include/sway/config.h
@@ -695,6 +695,8 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output);
bool apply_output_configs(struct matched_output_config *configs,
size_t configs_len, bool test_only);
+void apply_all_output_configs(void);
+
bool test_output_config(struct output_config *oc, struct sway_output *output);
struct output_config *store_output_config(struct output_config *oc);
diff --git a/sway/config/output.c b/sway/config/output.c
@@ -809,6 +809,34 @@ out:
return ok;
}
+void apply_all_output_configs(void) {
+ size_t configs_len = wl_list_length(&root->all_outputs);
+ struct matched_output_config *configs = calloc(configs_len, sizeof(*configs));
+ if (!configs) {
+ return;
+ }
+
+ int config_idx = 0;
+ struct sway_output *sway_output;
+ wl_list_for_each(sway_output, &root->all_outputs, link) {
+ if (sway_output == root->fallback_output) {
+ configs_len--;
+ continue;
+ }
+
+ struct matched_output_config *config = &configs[config_idx++];
+ config->output = sway_output;
+ config->config = find_output_config(sway_output);
+ }
+
+ apply_output_configs(configs, configs_len, false);
+ for (size_t idx = 0; idx < configs_len; idx++) {
+ struct matched_output_config *cfg = &configs[idx];
+ free_output_config(cfg->config);
+ }
+ free(configs);
+}
+
void apply_output_config_to_outputs(struct output_config *oc) {
size_t configs_len = wl_list_length(&root->all_outputs);
struct matched_output_config *configs = calloc(configs_len, sizeof(*configs));