aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/config/output.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/sway/config/output.c b/sway/config/output.c
index 3b524433..352d7f7c 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -153,28 +153,22 @@ static void merge_wildcard_on_all(struct output_config *wildcard) {
}
static void merge_id_on_name(struct output_config *oc) {
- char *id_on_name = NULL;
- char id[128];
- char *name = NULL;
- struct sway_output *output;
- wl_list_for_each(output, &root->all_outputs, link) {
- name = output->wlr_output->name;
- output_get_identifier(id, sizeof(id), output);
- if (strcmp(name, oc->name) == 0 || strcmp(id, oc->name) == 0) {
- size_t length = snprintf(NULL, 0, "%s on %s", id, name) + 1;
- id_on_name = malloc(length);
- if (!id_on_name) {
- sway_log(SWAY_ERROR, "Failed to allocate id on name string");
- return;
- }
- snprintf(id_on_name, length, "%s on %s", id, name);
- break;
- }
+ struct sway_output *output = all_output_by_name_or_id(oc->name);
+ if (output == NULL) {
+ return;
}
+ const char *name = output->wlr_output->name;
+ char id[128];
+ output_get_identifier(id, sizeof(id), output);
+
+ size_t size = snprintf(NULL, 0, "%s on %s", id, name) + 1;
+ char *id_on_name = malloc(size);
if (!id_on_name) {
+ sway_log(SWAY_ERROR, "Failed to allocate id on name string");
return;
}
+ snprintf(id_on_name, size, "%s on %s", id, name);
int i = list_seq_find(config->output_configs, output_name_cmp, id_on_name);
if (i >= 0) {