diff options
Diffstat (limited to 'swaybar/config.c')
-rw-r--r-- | swaybar/config.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/swaybar/config.c b/swaybar/config.c index d4cc9b1a..0071c7f9 100644 --- a/swaybar/config.c +++ b/swaybar/config.c | |||
@@ -78,6 +78,7 @@ struct swaybar_config *init_config(void) { | |||
78 | 78 | ||
79 | #if HAVE_TRAY | 79 | #if HAVE_TRAY |
80 | config->tray_padding = 2; | 80 | config->tray_padding = 2; |
81 | wl_list_init(&config->tray_bindings); | ||
81 | #endif | 82 | #endif |
82 | 83 | ||
83 | return config; | 84 | return config; |
@@ -91,6 +92,16 @@ static void free_binding(struct swaybar_binding *binding) { | |||
91 | free(binding); | 92 | free(binding); |
92 | } | 93 | } |
93 | 94 | ||
95 | #if HAVE_TRAY | ||
96 | static void free_tray_binding(struct tray_binding *binding) { | ||
97 | if (!binding) { | ||
98 | return; | ||
99 | } | ||
100 | free(binding->command); | ||
101 | free(binding); | ||
102 | } | ||
103 | #endif | ||
104 | |||
94 | void free_config(struct swaybar_config *config) { | 105 | void free_config(struct swaybar_config *config) { |
95 | free(config->status_command); | 106 | free(config->status_command); |
96 | free(config->font); | 107 | free(config->font); |
@@ -111,9 +122,14 @@ void free_config(struct swaybar_config *config) { | |||
111 | } | 122 | } |
112 | #if HAVE_TRAY | 123 | #if HAVE_TRAY |
113 | list_free_items_and_destroy(config->tray_outputs); | 124 | list_free_items_and_destroy(config->tray_outputs); |
114 | for (int i = 0; i < 10; ++i) { | 125 | |
115 | free(config->tray_bindings[i]); | 126 | struct tray_binding *tray_bind = NULL, *tmp_tray_bind = NULL; |
127 | wl_list_for_each_safe(tray_bind, tmp_tray_bind, &config->tray_bindings, | ||
128 | link) { | ||
129 | wl_list_remove(&tray_bind->link); | ||
130 | free_tray_binding(tray_bind); | ||
116 | } | 131 | } |
132 | |||
117 | free(config->icon_theme); | 133 | free(config->icon_theme); |
118 | #endif | 134 | #endif |
119 | free(config); | 135 | free(config); |