aboutsummaryrefslogtreecommitdiff
path: root/swaynag/swaynag.c
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2023-01-08 09:21:30 -0500
committerFurkan Sahin <furkan-dev@proton.me>2023-01-08 09:21:30 -0500
commit37e3e7748ca10d15c50a395b25551a4970924822 (patch)
tree94b773c7ff37dfe45c6e99cfaecff98927bf0b8b /swaynag/swaynag.c
parentcecc555febf7d036fbbc201ae75dd45307d53818 (diff)
swaynag: call swaynag_destroy on clean exit
And fix the fallout of the swaynag_destroy having evolved without being tested: * wl_display_disconnect was called too early * `button_close` and `swaynag.details.button_details` needed to be heap allocated, since they are added to swaynag.buttons, and all entries of swaynag.buttons are freed in swaynag_destroy * To keep things simpler, disconnect the lifetime of the 'Toggle details' button text config setting from the button itself.
Diffstat (limited to 'swaynag/swaynag.c')
-rw-r--r--swaynag/swaynag.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/swaynag/swaynag.c b/swaynag/swaynag.c
index 5620155d..08e26127 100644
--- a/swaynag/swaynag.c
+++ b/swaynag/swaynag.c
@@ -483,10 +483,6 @@ void swaynag_run(struct swaynag *swaynag) {
&& wl_display_dispatch(swaynag->display) != -1) {
// This is intentionally left blank
}
-
- if (swaynag->display) {
- wl_display_disconnect(swaynag->display);
- }
}
void swaynag_destroy(struct swaynag *swaynag) {
@@ -501,6 +497,7 @@ void swaynag_destroy(struct swaynag *swaynag) {
}
list_free(swaynag->buttons);
free(swaynag->details.message);
+ free(swaynag->details.details_text);
free(swaynag->details.button_up.text);
free(swaynag->details.button_down.text);
@@ -541,4 +538,8 @@ void swaynag_destroy(struct swaynag *swaynag) {
if (swaynag->shm) {
wl_shm_destroy(swaynag->shm);
}
+
+ if (swaynag->display) {
+ wl_display_disconnect(swaynag->display);
+ }
}