summaryrefslogtreecommitdiffstats
path: root/swaybar/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'swaybar/config.c')
-rw-r--r--swaybar/config.c20
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
96static 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
94void free_config(struct swaybar_config *config) { 105void 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);