aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sway/config.h2
-rw-r--r--sway/config.c5
-rw-r--r--sway/config/output.c11
3 files changed, 15 insertions, 3 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index 43ea7778..54cdcc90 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -586,6 +586,8 @@ struct output_config *store_output_config(struct output_config *oc);
void apply_output_config_to_outputs(struct output_config *oc);
+void reset_outputs(void);
+
void free_output_config(struct output_config *oc);
int workspace_output_cmp_workspace(const void *a, const void *b);
diff --git a/sway/config.c b/sway/config.c
index cd2d18a2..206ca95c 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -471,9 +471,8 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
}
if (is_active) {
- for (int i = 0; i < config->output_configs->length; i++) {
- apply_output_config_to_outputs(config->output_configs->items[i]);
- }
+ reset_outputs();
+
config->reloading = false;
if (config->swaynag_config_errors.pid > 0) {
swaynag_show(&config->swaynag_config_errors);
diff --git a/sway/config/output.c b/sway/config/output.c
index f1a06379..0f238715 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -391,6 +391,17 @@ void apply_output_config_to_outputs(struct output_config *oc) {
}
}
+void reset_outputs(void) {
+ struct output_config *oc = NULL;
+ int i = list_seq_find(config->output_configs, output_name_cmp, "*");
+ if (i >= 0) {
+ oc = config->output_configs->items[i];
+ } else {
+ oc = store_output_config(new_output_config("*"));
+ }
+ apply_output_config_to_outputs(oc);
+}
+
void free_output_config(struct output_config *oc) {
if (!oc) {
return;