diff options
-rw-r--r-- | include/sway/config.h | 2 | ||||
-rw-r--r-- | sway/config.c | 5 | ||||
-rw-r--r-- | sway/config/output.c | 11 |
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); | |||
586 | 586 | ||
587 | void apply_output_config_to_outputs(struct output_config *oc); | 587 | void apply_output_config_to_outputs(struct output_config *oc); |
588 | 588 | ||
589 | void reset_outputs(void); | ||
590 | |||
589 | void free_output_config(struct output_config *oc); | 591 | void free_output_config(struct output_config *oc); |
590 | 592 | ||
591 | int workspace_output_cmp_workspace(const void *a, const void *b); | 593 | 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) { | |||
471 | } | 471 | } |
472 | 472 | ||
473 | if (is_active) { | 473 | if (is_active) { |
474 | for (int i = 0; i < config->output_configs->length; i++) { | 474 | reset_outputs(); |
475 | apply_output_config_to_outputs(config->output_configs->items[i]); | 475 | |
476 | } | ||
477 | config->reloading = false; | 476 | config->reloading = false; |
478 | if (config->swaynag_config_errors.pid > 0) { | 477 | if (config->swaynag_config_errors.pid > 0) { |
479 | swaynag_show(&config->swaynag_config_errors); | 478 | 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) { | |||
391 | } | 391 | } |
392 | } | 392 | } |
393 | 393 | ||
394 | void reset_outputs(void) { | ||
395 | struct output_config *oc = NULL; | ||
396 | int i = list_seq_find(config->output_configs, output_name_cmp, "*"); | ||
397 | if (i >= 0) { | ||
398 | oc = config->output_configs->items[i]; | ||
399 | } else { | ||
400 | oc = store_output_config(new_output_config("*")); | ||
401 | } | ||
402 | apply_output_config_to_outputs(oc); | ||
403 | } | ||
404 | |||
394 | void free_output_config(struct output_config *oc) { | 405 | void free_output_config(struct output_config *oc) { |
395 | if (!oc) { | 406 | if (!oc) { |
396 | return; | 407 | return; |